class Dry::Transformer::Pipe::DSL

@api public

Attributes

ast[R]

@api private

container[R]

@api private

Public Class Methods

new(container, ast: [], &block) click to toggle source

@api private

# File lib/dry/transformer/pipe/dsl.rb, line 17
def initialize(container, ast: [], &block)
  @container = container
  @ast = ast
  instance_eval(&block) if block
end

Public Instance Methods

call(transformer) click to toggle source

@api private

# File lib/dry/transformer/pipe/dsl.rb, line 34
def call(transformer)
  Compiler.new(container, transformer).(ast)
end
dup() click to toggle source

@api private

# File lib/dry/transformer/pipe/dsl.rb, line 29
def dup
  self.class.new(container, ast: ast.dup)
end
t(name, *args) click to toggle source

@api public

# File lib/dry/transformer/pipe/dsl.rb, line 24
def t(name, *args)
  container[name, *args]
end

Private Instance Methods

method_missing(meth, *args, &block) click to toggle source

@api private

# File lib/dry/transformer/pipe/dsl.rb, line 51
def method_missing(meth, *args, &block)
  arg_nodes = *args.map { |a| [:arg, a] }
  ast << [:fn, (block ? [meth, [*arg_nodes, node(&block)]] : [meth, arg_nodes])]
end
node(&block) click to toggle source

@api private

# File lib/dry/transformer/pipe/dsl.rb, line 41
def node(&block)
  [:t, self.class.new(container, &block).ast]
end
respond_to_missing?(method, _include_private = false) click to toggle source

@api private

Calls superclass method
# File lib/dry/transformer/pipe/dsl.rb, line 46
def respond_to_missing?(method, _include_private = false)
  super || container.contain?(method)
end