module Schema::Parsers::Common
Schema::Parsers::Common
are parser methods for basic types
Constants
- BOOLEAN_REGEX
- FLOAT_REGEX
- INTEGER_REGEX
Public Instance Methods
parse_boolean(field_name, parsing_errors, value)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
rubocop:disable Metrics/CyclomaticComplexity
# 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) Integer(value) 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)
click to toggle source
rubocop:enable Metrics/CyclomaticComplexity
# 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)
click to toggle source
# 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