Sha256: 5ea1a7e5f93d74250623da5114092181895afee2a76a256814cc75a39ed36fb4

Contents?: true

Size: 962 Bytes

Versions: 4

Compression:

Stored size: 962 Bytes

Contents

require 'gorillib/some'
require 'gorillib/model'
require 'tsort'

require 'hanuman/registry'
require 'hanuman/link'
require 'hanuman/stage'              
require 'hanuman/graph'

module Hanuman
  module Shortcuts
    
    def builder_shortcut(builder_type, label, *args, &blk)
      if GlobalRegistry.registered?(label)
        builder = GlobalRegistry.retrieve(label)
      else
        builder = builder_type.receive(label: label)
      end
      GlobalRegistry.decorate_with_registry(builder) if builder.is_a?(GraphBuilder)
      builder.define(*args, &blk)
    end
    
    def add_shortcut_method_for(method_name, builder_type)
      self.define_singleton_method(method_name){ |label, *args, &blk| builder_shortcut(builder_type, label, *args, &blk) }
    end

    def registry() Hanuman::GlobalRegistry ; end    
    
  end

  extend Hanuman::Shortcuts
  
  add_shortcut_method_for(:stage, StageBuilder)
  add_shortcut_method_for(:graph, GraphBuilder)

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
wukong-3.0.1 lib/hanuman.rb
wukong-3.0.0 lib/hanuman.rb
wukong-3.0.0.pre3 lib/hanuman.rb
wukong-3.0.0.pre2 lib/hanuman.rb