Class: RailsDevtools::Importmaps::Base
- Inherits:
-
Object
- Object
- RailsDevtools::Importmaps::Base
- Defined in:
- lib/rails_devtools/importmaps/base.rb
Direct Known Subclasses
Class Method Summary collapse
- .pin(name, to: nil, preload: true, vendor: false) ⇒ Object
- .pin_all_from(directory, under:, preload: true) ⇒ Object
- .pins ⇒ Object
Instance Method Summary collapse
Class Method Details
.pin(name, to: nil, preload: true, vendor: false) ⇒ Object
4 5 6 7 |
# File 'lib/rails_devtools/importmaps/base.rb', line 4 def self.pin(name, to: nil, preload: true, vendor: false) to = "#{name}.js" if to.nil? pins << Pin.new(name, to, preload, vendor) end |
.pin_all_from(directory, under:, preload: true) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/rails_devtools/importmaps/base.rb', line 9 def self.pin_all_from(directory, under:, preload: true) Dir.glob("#{directory}/**/*.js").each do |file| path = Pathname.new(file) if path.basename.to_s == "index.js" pin(under, to: "#{under}/index.js", preload: preload) else name = file.sub("#{directory}/", "").sub(/\.js$/, "") to = "#{under}/#{name}" pin(to, to: "#{to}.js", preload: preload) end end end |
.pins ⇒ Object
22 23 24 |
# File 'lib/rails_devtools/importmaps/base.rb', line 22 def self.pins @pins ||= [] end |
Instance Method Details
#find(item) ⇒ Object
42 43 44 |
# File 'lib/rails_devtools/importmaps/base.rb', line 42 def find(item) pins.find { |p| p.to == "#{item}.js" } end |
#pins ⇒ Object
30 31 32 |
# File 'lib/rails_devtools/importmaps/base.rb', line 30 def pins self.class.pins end |
#preloads ⇒ Object
26 27 28 |
# File 'lib/rails_devtools/importmaps/base.rb', line 26 def preloads pins.select(&:preload) end |
#to_json ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/rails_devtools/importmaps/base.rb', line 34 def to_json(**) imports = self.class.pins.each_with_object({}) do |pin, memo| memo[pin.name] = pin.path end JSON.pretty_generate({ imports: imports }) end |