class Dry::Logic::Rule::Key

def self.evaluator(name)

def self.evaluator(name)
  Evaluator::Key.new(name)
end

def self.new(predicate, options)

def self.new(predicate, options)
  name = options.fetch(:name)
  eval = options.fetch(:evaluator, evaluator(name))
  super(predicate, evaluator: eval, name: name)
end

def evaluate(input)

def evaluate(input)
  evaluator[input]
end

def initialize(predicate, options)

def initialize(predicate, options)
  super
  @name = options[:name]
  @evaluator = options[:evaluator]
end

def to_ast

def to_ast
  [type, [name, predicate.to_ast]]
end

def type

def type
  :key
end