Module: SearchObject::Plugin::Enum::Handler
- Defined in:
- lib/search_object/plugin/enum.rb
Class Method Summary collapse
- .apply_filter(object:, option:, enums:, scope:, value:) ⇒ Object
- .build(name, enums) ⇒ Object
- .handle_invalid_value(object:, option:, enums:, scope:, value:) ⇒ Object
Class Method Details
.apply_filter(object:, option:, enums:, scope:, value:) ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'lib/search_object/plugin/enum.rb', line 32 def apply_filter(object:, option:, enums:, scope:, value:) return if value.nil? || value == '' unless enums.include? value return handle_invalid_value(object: object, option: option, enums: enums, scope: scope, value: value) end object.send("apply_#{Helper.underscore(option)}_with_#{Helper.underscore(value)}", scope) end |
.build(name, enums) ⇒ Object
26 27 28 29 30 |
# File 'lib/search_object/plugin/enum.rb', line 26 def build(name, enums) enums = enums.map(&:to_s) handler = self ->(scope, value) { handler.apply_filter(object: self, option: name, enums: enums, scope: scope, value: value) } end |
.handle_invalid_value(object:, option:, enums:, scope:, value:) ⇒ Object
42 43 44 45 46 47 48 49 50 |
# File 'lib/search_object/plugin/enum.rb', line 42 def handle_invalid_value(object:, option:, enums:, scope:, value:) specific = "handle_invalid_#{option}" return object.send(specific, scope, value) if object.respond_to? specific, true catch_all = 'handle_invalid_enum' return object.send(catch_all, option, scope, value) if object.respond_to? catch_all, true raise InvalidEnumValueError.new(option, enums, value) end |