class Metamorpher::Builders::AST::DerivationBuilder

Public Instance Methods

derivation!(*base, &block) click to toggle source
# File lib/metamorpher/builders/ast/derivation_builder.rb, line 8
def derivation!(*base, &block)
  fail ArgumentError, "wrong number of arguments (0)" if base.empty?

  Terms::Derived.new(
    base: base,
    derivation: derivation_strategy(block)
  )
end

Private Instance Methods

derivation_strategy(block) click to toggle source
# File lib/metamorpher/builders/ast/derivation_builder.rb, line 19
def derivation_strategy(block)
  if block.nil?
    ->(*args) { args.first }
  else
    ->(*args) { block.call(*args, Builder.new) }
  end
end