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