class Brita::ValueParser
Attributes
supports_boolean[RW]
supports_json[RW]
supports_ranges[RW]
value[RW]
Public Class Methods
new(value:, options: {})
click to toggle source
# File lib/brita/value_parser.rb, line 4 def initialize(value:, options: {}) @value = value @supports_boolean = options.fetch(:supports_boolean, false) @supports_ranges = options.fetch(:supports_ranges, false) @supports_json = options.fetch(:supports_json, false) end
Public Instance Methods
array_from_json()
click to toggle source
# File lib/brita/value_parser.rb, line 24 def array_from_json result = JSON.parse(value) if result.is_a?(Array) result else value end rescue JSON::ParserError value end
parse()
click to toggle source
# File lib/brita/value_parser.rb, line 11 def parse @_result ||= if parse_as_range? range_value elsif parse_as_boolean? boolean_value elsif parse_as_json? array_from_json else value end end
Private Instance Methods
boolean_value()
click to toggle source
# File lib/brita/value_parser.rb, line 53 def boolean_value if Rails.version.starts_with?("5") ActiveRecord::Type::Boolean.new.cast(value) else ActiveRecord::Type::Boolean.new.type_cast_from_user(value) end end
parse_as_boolean?()
click to toggle source
# File lib/brita/value_parser.rb, line 49 def parse_as_boolean? supports_boolean end
parse_as_json?()
click to toggle source
# File lib/brita/value_parser.rb, line 45 def parse_as_json? supports_json && value.is_a?(String) end
parse_as_range?()
click to toggle source
# File lib/brita/value_parser.rb, line 37 def parse_as_range? supports_ranges && value.to_s.include?("...") end
range_value()
click to toggle source
# File lib/brita/value_parser.rb, line 41 def range_value Range.new(*value.split("...")) end