Sha256: 1f500b37dff08d9b517367944860bac81e8b5cba3b2b5d6897000713736fd0a9

Contents?: true

Size: 969 Bytes

Versions: 3

Compression:

Stored size: 969 Bytes

Contents

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

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

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

3 entries across 3 versions & 2 rubygems

Version Path
ul-wukong-4.1.1 lib/hanuman.rb
ul-wukong-4.1.0 lib/hanuman.rb
wukong-4.0.0 lib/hanuman.rb