class RSchema::Coercers::Chain

Applies a list of coercers, in order

Attributes

subcoercers[R]

Public Class Methods

[](*subbuilders) click to toggle source
# File lib/rschema/coercers/chain.rb, line 11
def self.[](*subbuilders)
  Builder.new(subbuilders)
end
new(subcoercers) click to toggle source
# File lib/rschema/coercers/chain.rb, line 15
def initialize(subcoercers)
  @subcoercers = subcoercers
end

Public Instance Methods

call(value) click to toggle source
# File lib/rschema/coercers/chain.rb, line 19
def call(value)
  result = Result.success(value)
  subcoercers.each do |coercer|
    result = coercer.call(result.value)
    break if result.invalid?
  end
  result
end
will_affect?(value) click to toggle source
# File lib/rschema/coercers/chain.rb, line 28
def will_affect?(value)
  subcoercers.any? { |sc| sc.will_affect?(value) }
end