class Middleman::CoreExtensions::Collections::LazyCollectorStep

Constants

DELEGATE

Public Class Methods

new(name, args, block, parent=nil) click to toggle source
# File lib/middleman-core/core_extensions/collections/lazy_step.rb, line 7
def initialize(name, args, block, parent=nil)
  @name = name
  @args = args
  @block = block

  @parent = parent
  @result = nil

  leaves << self
end

Public Instance Methods

leaves() click to toggle source
# File lib/middleman-core/core_extensions/collections/lazy_step.rb, line 18
def leaves
  @parent.leaves
end
method_missing(name, *args, &block) click to toggle source
# File lib/middleman-core/core_extensions/collections/lazy_step.rb, line 40
def method_missing(name, *args, &block)
  return ::Kernel.send(name, *args, &block) if DELEGATE.include? name

  leaves.delete self

  LazyCollectorStep.new(name, args, block, self)
end
value(ctx=nil) click to toggle source
# File lib/middleman-core/core_extensions/collections/lazy_step.rb, line 22
def value(ctx=nil)
  data = @parent.value(ctx)

  original_block = @block

  if original_block
    b = if ctx
      ::Proc.new do |*args|
        ctx.instance_exec(*args, &original_block)
      end
    else
      original_block
    end
  end

  data.send(@name, *@args.deep_dup, &b)
end