Sha256: bb5bf82f58b729d62fdf6b85c1d6858b9efc3b9368fedb58c350db9048eb20ba
Contents?: true
Size: 987 Bytes
Versions: 3
Compression:
Stored size: 987 Bytes
Contents
# frozen_string_literal: true require "dry/core/equalizer" 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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-logic-1.2.0 | lib/dry/logic/evaluator.rb |
dry-logic-1.1.1 | lib/dry/logic/evaluator.rb |
dry-logic-1.1.0 | lib/dry/logic/evaluator.rb |