Module: Decanter::Parser
- Defined in:
- lib/decanter/parser.rb,
lib/decanter/parser/base.rb,
lib/decanter/parser/core.rb,
lib/decanter/parser/date_parser.rb,
lib/decanter/parser/hash_parser.rb,
lib/decanter/parser/join_parser.rb,
lib/decanter/parser/pass_parser.rb,
lib/decanter/parser/float_parser.rb,
lib/decanter/parser/phone_parser.rb,
lib/decanter/parser/value_parser.rb,
lib/decanter/parser/string_parser.rb,
lib/decanter/parser/boolean_parser.rb,
lib/decanter/parser/integer_parser.rb,
lib/decanter/parser/datetime_parser.rb,
lib/decanter/parser/key_value_splitter_parser.rb
Defined Under Namespace
Modules: Core Classes: Base, BooleanParser, DateParser, DateTimeParser, FloatParser, HashParser, IntegerParser, JoinParser, KeyValueSplitterParser, PassParser, PhoneParser, StringParser, ValueParser
Class Method Summary collapse
-
.expand(parser) ⇒ Object
expand to include preparsers.
-
.klass_or_sym_to_str(klass_or_sym) ⇒ Object
convert from a class or symbol to a string and concat ‘Parser’.
-
.parser_constantize(parser_str) ⇒ Object
convert from a string to a constant.
- .parsers_for(klass_or_syms) ⇒ Object
Class Method Details
.expand(parser) ⇒ Object
expand to include preparsers
33 34 35 |
# File 'lib/decanter/parser.rb', line 33 def (parser) Parser.parsers_for(parser.preparsers).push(parser) end |
.klass_or_sym_to_str(klass_or_sym) ⇒ Object
convert from a class or symbol to a string and concat ‘Parser’
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/decanter/parser.rb', line 14 def klass_or_sym_to_str(klass_or_sym) case klass_or_sym when Class klass_or_sym.name when Symbol klass_or_sym.to_s.singularize.camelize else raise ArgumentError.new("cannot lookup parser for #{klass_or_sym} with class #{klass_or_sym.class}") end.concat('Parser') end |
.parser_constantize(parser_str) ⇒ Object
convert from a string to a constant
26 27 28 29 30 |
# File 'lib/decanter/parser.rb', line 26 def parser_constantize(parser_str) parser_str.safe_constantize || "Decanter::Parser::".concat(parser_str).safe_constantize || raise(NameError.new("cannot find parser #{parser_str}")) end |
.parsers_for(klass_or_syms) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/decanter/parser.rb', line 5 def parsers_for(klass_or_syms) Array.wrap(klass_or_syms) .map { |klass_or_sym| klass_or_sym_to_str(klass_or_sym) } .map { |parser_str| parser_constantize(parser_str) } .map { |parser| (parser) } .flatten end |