Module: Card::Bootstrap::ComponentLoader

Included in:
Card::Bootstrap, Card::Bootstrapper
Defined in:
mod/bootstrap/lib/card/bootstrap/component_loader.rb

Instance Method Summary collapse

Instance Method Details

#componentsObject



18
19
20
21
22
23
# File 'mod/bootstrap/lib/card/bootstrap/component_loader.rb', line 18

def components
  path = File.expand_path "component/*.rb", __dir__
  Dir.glob(path).map do |file|
    File.basename file, ".rb"
  end
end

#include_component(component) ⇒ Object



11
12
13
14
15
16
# File 'mod/bootstrap/lib/card/bootstrap/component_loader.rb', line 11

def include_component component
  component_class = to_const component.camelcase
  define_method component do |*args, &block|
    component_class.render self, *args, &block
  end
end

#load_componentsObject



4
5
6
7
8
9
# File 'mod/bootstrap/lib/card/bootstrap/component_loader.rb', line 4

def load_components
  components.each do |component|
    require_relative "component/#{component}"
    include_component component
  end
end

#to_const(name) ⇒ Object



25
26
27
# File 'mod/bootstrap/lib/card/bootstrap/component_loader.rb', line 25

def to_const name
  self.class.const_get "::Card::Bootstrap::Component::#{name.camelcase}"
end