Module: Schema::Parsers::Common
- Defined in:
- lib/schema/parsers/common.rb
Overview
Schema::Parsers::Common are parser methods for basic types
Constant Summary collapse
- INTEGER_REGEX =
/^[-+]?(?:[1-9]\d*|0)(?:\.0+)?$/.freeze
- FLOAT_REGEX =
/^[-+]?(?:[1-9]\d*|0)(?:\.\d+)?([Ee]-?\d+)?$/.freeze
- BOOLEAN_REGEX =
/^(?:1|t|true|on|y|yes)$/i.freeze
Instance Method Summary collapse
- #parse_boolean(field_name, parsing_errors, value) ⇒ Object
- #parse_date(field_name, parsing_errors, value) ⇒ Object
- #parse_float(field_name, parsing_errors, value) ⇒ Object
-
#parse_integer(field_name, parsing_errors, value) ⇒ Object
rubocop:disable Metrics/CyclomaticComplexity.
-
#parse_string(field_name, parsing_errors, value) ⇒ Object
rubocop:enable Metrics/CyclomaticComplexity.
- #parse_time(field_name, parsing_errors, value) ⇒ Object
Instance Method Details
#parse_boolean(field_name, parsing_errors, value) ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/schema/parsers/common.rb', line 114 def parse_boolean(field_name, parsing_errors, value) case value when TrueClass, FalseClass value when Integer, Float value != 0 when String BOOLEAN_REGEX.match(value) when nil nil else parsing_errors.add(field_name, ::Schema::ParsingErrors::UNHANDLED_TYPE) nil end end |
#parse_date(field_name, parsing_errors, value) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/schema/parsers/common.rb', line 93 def parse_date(field_name, parsing_errors, value) case value when Date value when Time value.to_date when String begin Date.parse(value) rescue ArgumentError parsing_errors.add(field_name, ::Schema::ParsingErrors::INVALID) nil end when nil nil else parsing_errors.add(field_name, ::Schema::ParsingErrors::UNHANDLED_TYPE) nil end end |
#parse_float(field_name, parsing_errors, value) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/schema/parsers/common.rb', line 51 def parse_float(field_name, parsing_errors, value) case value when Float value when Integer value.to_f when String if FLOAT_REGEX.match(value) Float(value) else parsing_errors.add(field_name, ::Schema::ParsingErrors::INVALID) nil end when nil nil else parsing_errors.add(field_name, ::Schema::ParsingErrors::UNHANDLED_TYPE) nil end end |
#parse_integer(field_name, parsing_errors, value) ⇒ Object
rubocop:disable Metrics/CyclomaticComplexity
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/schema/parsers/common.rb', line 14 def parse_integer(field_name, parsing_errors, value) case value when Integer value when String if INTEGER_REGEX.match(value) value.to_i else parsing_errors.add(field_name, ::Schema::ParsingErrors::INVALID) nil end when Float parsing_errors.add(field_name, ::Schema::ParsingErrors::INCOMPATABLE) if (value % 1) > 0.0 value.to_i when nil nil else parsing_errors.add(field_name, ::Schema::ParsingErrors::UNHANDLED_TYPE) nil end end |
#parse_string(field_name, parsing_errors, value) ⇒ Object
rubocop:enable Metrics/CyclomaticComplexity
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/schema/parsers/common.rb', line 37 def parse_string(field_name, parsing_errors, value) case value when String value when ::Hash, ::Array parsing_errors.add(field_name, ::Schema::ParsingErrors::INCOMPATABLE) nil when nil nil else String(value) end end |
#parse_time(field_name, parsing_errors, value) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/schema/parsers/common.rb', line 72 def parse_time(field_name, parsing_errors, value) case value when Time value when Date value.to_time when String begin Time.xmlschema(value) rescue ArgumentError parsing_errors.add(field_name, ::Schema::ParsingErrors::INVALID) nil end when nil nil else parsing_errors.add(field_name, ::Schema::ParsingErrors::UNHANDLED_TYPE) nil end end |