Class: StructuredMenus::Dispatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/structured_menus/dispatcher.rb

Instance Method Summary collapse

Constructor Details

#initializeDispatcher

Returns a new instance of Dispatcher.



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/structured_menus/dispatcher.rb', line 3

def initialize
  menus_dir = StructuredMenus.config.menus_directory
  @menus = Dir.entries(menus_dir).reject { |f| File.directory? f }\
                                 .map { |p| [File.basename(p).gsub('.yml', ''), p] }.to_h.with_indifferent_access
  @adapters = StructuredMenus.config.adapters.map do |an|
    if an.class == Class
      an
    elsif an.class == String
      require_relative an
      File.basename(an).gsub('.rb', '').classify.constantize
    end
  end.map { |ac| [ac.name.demodulize.gsub('Adapter', '').underscore, ac] }.to_h.with_indifferent_access
end

Instance Method Details

#show(name, adapter_name, user, **options) ⇒ Object



17
18
19
20
21
# File 'lib/structured_menus/dispatcher.rb', line 17

def show(name, adapter_name, user, **options)
  menu = YAML.safe_load(File.read(StructuredMenus.config.menus_directory.join(@menus[name])))
  adapter = @adapters[adapter_name]
  adapter.show(menu, user, **options)
end