Module: Stimulus::Manifest

Extended by:
Manifest
Included in:
Manifest
Defined in:
lib/stimulus/manifest.rb

Instance Method Summary collapse

Instance Method Details

#extract_controllers_from(directory) ⇒ Object



25
26
27
28
29
# File 'lib/stimulus/manifest.rb', line 25

def extract_controllers_from(directory)
  (directory.children.select { |e| e.to_s =~ /_controller(\.\w+)+$/ } +
    directory.children.select(&:directory?).collect { |d| extract_controllers_from(d) }
  ).flatten.sort
end

#generate_from(controllers_path) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/stimulus/manifest.rb', line 4

def generate_from(controllers_path)
  manifest = extract_controllers_from(controllers_path).collect do |controller_path|
    import_and_register_controller(controllers_path, controller_path)
  end

  manifest.uniq
end

#import_and_register_controller(controllers_path, controller_path) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/stimulus/manifest.rb', line 12

def import_and_register_controller(controllers_path, controller_path)
  controller_path = controller_path.relative_path_from(controllers_path).to_s
  module_path = controller_path.split('.').first
  controller_class_name = module_path.underscore.camelize.gsub(/::/, "__")
  tag_name = module_path.remove(/_controller/).gsub(/_/, "-").gsub(/\//, "--")

  <<-JS

import #{controller_class_name} from "./#{module_path}"
application.register("#{tag_name}", #{controller_class_name})
  JS
end