Sha256: f1db2c27622a95d69256088b9af7681aad424fe8eac3de3fdf2d49f85dadf9c8
Contents?: true
Size: 1.07 KB
Versions: 2
Compression:
Stored size: 1.07 KB
Contents
# frozen_string_literal: true require 'transproc/compiler' module Transproc class Transformer # @api public class DSL # @api private attr_reader :container # @api private attr_reader :ast # @api private def initialize(container, ast: [], &block) @container = container @ast = ast instance_eval(&block) if block end # @api private def dup self.class.new(container, ast: ast.dup) end # @api private def call(transformer) Compiler.new(container, transformer).(ast) end private # @api private def node(&block) [:t, self.class.new(container, &block).ast] end # @api private def respond_to_missing?(method, _include_private = false) super || container.contain?(method) end # @api private 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 end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
transproc-1.1.1 | lib/transproc/transformer/dsl.rb |
transproc-1.1.0 | lib/transproc/transformer/dsl.rb |