class ROM::Options::Option
Defines a single option
@api private
Attributes
name[R]
reader[R]
Public Class Methods
new(name, options = {})
click to toggle source
# File lib/rom/support/options.rb, line 47 def initialize(name, options = {}) @name = name @reader = options.fetch(:reader) { false } # Prepares transformations applied by [#transform] add_coercer options[:coercer] add_default options[:default] if options.key? :default add_type_checker options[:type] add_value_checker options[:allow] add_reader if reader end
Public Instance Methods
transform(object, options)
click to toggle source
Takes options of some object, applies current transformations and returns updated options
@param [Object] object @param [Hash] options
@return [Hash] options
# File lib/rom/support/options.rb, line 66 def transform(object, options) transformers.inject(options) { |a, e| e[object, a] } end
Private Instance Methods
add_coercer(fn)
click to toggle source
# File lib/rom/support/options.rb, line 85 def add_coercer(fn) return unless fn.is_a?(Proc) transformers << Transformers[:coercer, name, fn] end
add_default(value)
click to toggle source
# File lib/rom/support/options.rb, line 80 def add_default(value) transformer = value.respond_to?(:call) ? :default_proc : :default_value transformers << Transformers[transformer, name, value] end
add_reader()
click to toggle source
# File lib/rom/support/options.rb, line 76 def add_reader transformers << Transformers[:reader_assigner, name] end
add_type_checker(type)
click to toggle source
# File lib/rom/support/options.rb, line 90 def add_type_checker(type) return unless type.is_a?(Class) transformers << Transformers[:type_checker, name, type] end
add_value_checker(values)
click to toggle source
# File lib/rom/support/options.rb, line 95 def add_value_checker(values) return unless values.respond_to?(:include?) transformers << Transformers[:value_checker, name, values] end
transformers()
click to toggle source
# File lib/rom/support/options.rb, line 72 def transformers @transformers ||= [] end