Sha256: a63a84edff7e8bef04e93e48415f86f3ffe0989e7364b30ba8562877871b42a5
Contents?: true
Size: 954 Bytes
Versions: 1
Compression:
Stored size: 954 Bytes
Contents
module FilterParam class Field TYPES = %i[boolean string integer decimal date datetime].freeze attr_reader :type, :name def initialize(name, type, options = {}) @name = name @type = field_type(type) @rename = field_rename(options[:rename]) @value_transformer = options[:value] end def transform_value(value) return value if value_transformer.blank? value_transformer.call(value) end def actual_name rename.presence || name end def allow_operator?(operator) true end private attr_reader :value_transformer, :rename def field_rename(rename) return rename.call(name) if rename.is_a?(Proc) rename end def field_type(type) type = (type.presence || :string).to_sym return type if type.in?(TYPES) raise UnknownType.new("Unknown type '#{type}' for field '#{name}'. Allowed types: #{TYPES}.") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
filter_param-0.1.2 | lib/filter_param/field.rb |