Sha256: bf8c5dc4ba768c7d662860ca8cf8afdf6fb34705b6c689ea6e3df870ad7d8ba3
Contents?: true
Size: 957 Bytes
Versions: 4
Compression:
Stored size: 957 Bytes
Contents
# frozen_string_literal: true module Dry module Logic class Evaluator include Dry::Equalizer(:path) attr_reader :path class Set include Dry::Equalizer(:evaluators) attr_reader :evaluators def self.new(paths) super(paths.map { |path| Evaluator::Key.new(path) }) end def initialize(evaluators) @evaluators = evaluators end def call(input) evaluators.map { |evaluator| evaluator[input] } end alias_method :[], :call end class Key < Evaluator def call(input) path.reduce(input) { |a, e| a[e] } end alias_method :[], :call end class Attr < Evaluator def call(input) path.reduce(input) { |a, e| a.public_send(e) } end alias_method :[], :call end def initialize(path) @path = Array(path) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
dry-logic-1.6.0 | lib/dry/logic/evaluator.rb |
dry-logic-1.5.0 | lib/dry/logic/evaluator.rb |
dry-logic-1.4.0 | lib/dry/logic/evaluator.rb |
dry-logic-1.3.0 | lib/dry/logic/evaluator.rb |