lib/importmap/map.rb in importmap-rails-0.2.6 vs lib/importmap/map.rb in importmap-rails-0.2.7

- old
+ new

@@ -8,16 +8,16 @@ def draw(&block) instance_eval(&block) end - def pin(name, to: nil, preload: false) + def pin(name, to: nil, preload: true) @files[name] = MappedFile.new(name: name, path: to || "#{name}.js", preload: preload) end - def pin_all_from(path, under: nil, preload: false) - @directories[path] = MappedDir.new(path: path, under: under, preload: preload) + def pin_all_from(dir, under: nil, to: nil, preload: true) + @directories[dir] = MappedDir.new(dir: dir, under: under, path: to, preload: preload) end def preloaded_module_paths(resolver:) cache_as(:preloaded_module_paths) do resolve_asset_paths(expanded_preloading_files_and_directories, resolver: resolver).values @@ -30,11 +30,11 @@ end end private MappedFile = Struct.new(:name, :path, :preload, keyword_init: true) - MappedDir = Struct.new(:path, :under, :preload, keyword_init: true) + MappedDir = Struct.new(:dir, :path, :under, :preload, keyword_init: true) def cache_as(name) if (cached && result = instance_variable_get("@cached_#{name}")) result else @@ -61,31 +61,36 @@ @files.dup.tap { |expanded| expand_directories_into expanded } end def expand_directories_into(paths) @directories.values.each do |mapping| - if (absolute_path = absolute_root_of(mapping.path)).exist? + if (absolute_path = absolute_root_of(mapping.dir)).exist? find_javascript_files_in_tree(absolute_path).each do |filename| module_filename = filename.relative_path_from(absolute_path) - module_name = module_name_from(module_filename, mapping.under) - module_path = mapping.under ? absolute_path.basename.join(module_filename).to_s : module_filename.to_s + module_name = module_name_from(module_filename, mapping) + module_path = module_path_from(module_filename, mapping) paths[module_name] = MappedFile.new(name: module_name, path: module_path, preload: mapping.preload) end end end end - # Strip off the extension, /index, or any versioning data for an absolute module name. - def module_name_from(filename, under) - filename_without_ext = filename.to_s.remove(filename.extname) + def module_name_from(filename, mapping) + filename_without_ext_and_version = filename.to_s.remove(filename.extname).split("@").first - if filename_without_ext == "index" && under - under + case + when filename_without_ext_and_version == "index" && mapping.under + mapping.under + when mapping.under + "#{mapping.under}/#{filename_without_ext_and_version}" else - module_name = filename_without_ext.split("@").first - under ? "#{under}/#{module_name}" : module_name + module_name end + end + + def module_path_from(filename, mapping) + [ mapping.path || mapping.under, filename.to_s ].join("/") end def find_javascript_files_in_tree(path) Dir[path.join("**/*.js{,m}")].collect { |file| Pathname.new(file) }.select(&:file?) end