Class: Sift::ValueParser
- Inherits:
-
Object
- Object
- Sift::ValueParser
- Defined in:
- lib/sift/value_parser.rb
Instance Method Summary collapse
- #array_from_json ⇒ Object
-
#initialize(value:, type: nil, options: {}) ⇒ ValueParser
constructor
A new instance of ValueParser.
- #parse ⇒ Object
- #parse_json(string) ⇒ Object
- #parse_json_and_values ⇒ Object
Constructor Details
#initialize(value:, type: nil, options: {}) ⇒ ValueParser
Returns a new instance of ValueParser.
3 4 5 6 7 8 9 10 |
# File 'lib/sift/value_parser.rb', line 3 def initialize(value:, type: nil, options: {}) @value = value @supports_boolean = .fetch(:supports_boolean, false) @supports_ranges = .fetch(:supports_ranges, false) @supports_json = .fetch(:supports_json, false) @supports_json_object = .fetch(:supports_json_object, false) @value = normalized_value(value, type) end |
Instance Method Details
#array_from_json ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/sift/value_parser.rb', line 42 def array_from_json result = parse_json(value) if result.is_a?(Array) result else value end end |
#parse ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/sift/value_parser.rb', line 12 def parse @_result ||= if parse_as_range? range_value elsif parse_as_boolean? boolean_value elsif parse_as_json? supports_json_object ? parse_json_and_values : array_from_json else value end end |
#parse_json(string) ⇒ Object
25 26 27 28 29 |
# File 'lib/sift/value_parser.rb', line 25 def parse_json(string) JSON.parse(string) rescue JSON::ParserError string end |
#parse_json_and_values ⇒ Object
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/sift/value_parser.rb', line 31 def parse_json_and_values parsed_jsonb = parse_json(value) return parsed_jsonb if parsed_jsonb.is_a?(Array) || parsed_jsonb.is_a?(String) parsed_jsonb.each_with_object({}) do |key_value, hash| key = key_value.first value = key_value.last hash[key] = value.is_a?(String) ? parse_json(value) : value end end |