class PluginBuilder

Attributes

plugin_objects[RW]

Public Instance Methods

construct_plugin(plugin_name, object_map_yaml, system_objects) click to toggle source
# File lib/ceedling/plugin_builder.rb, line 7
def construct_plugin(plugin_name, object_map_yaml, system_objects)
  # @streaminator.stdout_puts("Constructing plugin #{plugin_name}...", Verbosity::OBNOXIOUS)
  object_map = {}
  @plugin_objects = {}
  @system_objects = system_objects

  if object_map_yaml
    @object_map = YAML.load(object_map_yaml)
    @object_map.each_key do |obj|
      construct_object(obj)
    end
  else
    raise "Invalid object map for plugin #{plugin_name}!"
  end

  return @plugin_objects
end

Private Instance Methods

build_object(new_object) click to toggle source
# File lib/ceedling/plugin_builder.rb, line 42
def build_object(new_object)
  if @plugin_objects[new_object.to_sym].nil?
    # @streaminator.stdout_puts("Building plugin object #{new_object}", Verbosity::OBNOXIOUS)
    require new_object
    class_name = camelize(new_object)
    new_instance = eval("#{class_name}.new(@system_objects, class_name.to_s)")
    new_instance.plugin_objects = @plugin_objects
    @plugin_objects[new_object.to_sym] = new_instance
  end
end
camelize(underscored_name) click to toggle source
# File lib/ceedling/plugin_builder.rb, line 27
def camelize(underscored_name)
  return underscored_name.gsub(/(_|^)([a-z0-9])/) {$2.upcase}
end
construct_object(obj) click to toggle source
# File lib/ceedling/plugin_builder.rb, line 31
def construct_object(obj)
  if @plugin_objects[obj].nil?
    if @object_map[obj] && @object_map[obj]['compose']
      @object_map[obj]['compose'].each do |dep|
        construct_object(dep)
      end
    end
    build_object(obj)
  end
end