class Bumbleworks::TreeBuilder
Attributes
name[R]
tree[R]
Public Class Methods
from_definition(*args, &block)
click to toggle source
# File lib/bumbleworks/tree_builder.rb, line 34 def from_definition(*args, &block) tree = ::Ruote.define *args, &block builder = new(:tree => tree) end
new(options)
click to toggle source
# File lib/bumbleworks/tree_builder.rb, line 10 def initialize(options) @forced_name = options[:name] @definition = options[:definition] @tree = options[:tree] unless !!@definition ^ !!@tree raise ArgumentError, "Must specify either definition or tree (not both)" end end
Public Instance Methods
build!()
click to toggle source
# File lib/bumbleworks/tree_builder.rb, line 19 def build! initialize_tree_from_definition! unless @tree if @name = name_from_tree @forced_name ||= name raise InvalidTree, "Name does not match name in definition" if @forced_name != @name @tree[1].delete(@tree[1].keys.first) end @name = @forced_name add_name_to_tree! @tree rescue ::Ruote::Reader::Error => e raise InvalidTree, e.message end
Private Instance Methods
add_name_to_tree!()
click to toggle source
# File lib/bumbleworks/tree_builder.rb, line 56 def add_name_to_tree! @tree[1] = { "name" => @name }.merge(@tree[1]) end
initialize_tree_from_definition!()
click to toggle source
# File lib/bumbleworks/tree_builder.rb, line 42 def initialize_tree_from_definition! converted = @definition.strip.gsub(/^Bumbleworks.define_process/, 'Ruote.define') @tree = ::Ruote::Reader.read(converted) end
name_from_tree()
click to toggle source
# File lib/bumbleworks/tree_builder.rb, line 47 def name_from_tree first_key, first_value = @tree[1].first name_from_tree = if first_key == 'name' first_value elsif first_value.nil? first_key end end