class Nodus::Nodes::Generator

Given: enumerator or something that can be to_enum’ed Given: lambda or proc or block - params are gathered by reflection Given: class - assumed to be enumerable (or perhaps have a wrappable loop function?) params gathered via

reflection on initialize.

see stackoverflow.com/questions/4982630/trouble-yielding-inside-a-block-lambda when we get to lambdas etc.

Attributes

kernel[R]

Public Class Methods

on_compose(title, kernel=nil, &block) click to toggle source
Calls superclass method Nodus::Nodes::Node::on_compose
# File lib/nodus/nodes.rb, line 120
def on_compose(title, kernel=nil, &block)
  super(title)
  @kernel = kernel || block
  case @kernel
  when Enumerator then @kernel = @kernel.lazy # No parameters
  when Class
    init_params = @kernel.instance_method(:initialize).parameters
    init_params.each{|kind,pname| param(pname, (kind == :req ? :required : :optional))}
  when Node
    # TODO: Simply verify that the kernel has no input ports and create this thin wrapper around it...
    # Although it still might make sense to warn that this is a senseless act? (unless it becomes
    # necessary for some sorts of renaming etc.?)
    error NotImplementedError
  else
    error ArgumentError, "Generator Nodes don't support #{kernel.inspect} as a kernel"
  end
end