Class: Freightrain::BindingLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/freightrain/binding/binding_loader.rb

Instance Method Summary collapse

Constructor Details

#initialize(class_name) ⇒ BindingLoader

Returns a new instance of BindingLoader.



8
9
10
11
12
13
# File 'lib/freightrain/binding/binding_loader.rb', line 8

def initialize(class_name)      
  @search_path = File.join(
    Freightrain.views_path,
    "**",
    class_name.to_convention + ".bnd.yml")      
end

Instance Method Details

#each_bindingObject

TODO: refactor, this needs a little cleanup, method does too much



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/freightrain/binding/binding_loader.rb', line 21

def each_binding
  return nil unless filename
  binding_collection = YAML.load_file(filename) || []
  binding_collection.each do |widget, binding|
    binding = [binding] if binding.kind_of? Hash #needed if only 1 binding declared
    binding.each do |binding_options|
      options = {}
      binding_options.each do |key, value|
        options[key.to_sym] = value
      end
      yield(widget, options)
    end        
  end
end

#filenameObject



15
16
17
18
# File 'lib/freightrain/binding/binding_loader.rb', line 15

def filename
  result = Dir.glob(@search_path)
  return result[0] || nil
end