Skip to content

Commit 2ecde30

Browse files
authored
Merge pull request #238 from calebowens/fix-regex-for-super-indexes
Updated module_name regexp to not match incorrect indexes
2 parents f2779ee + eae70a3 commit 2ecde30

File tree

4 files changed

+21
-1
lines changed

4 files changed

+21
-1
lines changed

Diff for: lib/importmap/map.rb

+11-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,17 @@ def expand_directories_into(paths)
141141
end
142142

143143
def module_name_from(filename, mapping)
144-
[ mapping.under, filename.to_s.remove(filename.extname).remove(/\/?index$/).presence ].compact.join("/")
144+
# Regex explanation:
145+
# (?:\/|^) # Matches either / OR the start of the string
146+
# index # Matches the word index
147+
# $ # Matches the end of the string
148+
#
149+
# Sample matches
150+
# index
151+
# folder/index
152+
index_regex = /(?:\/|^)index$/
153+
154+
[ mapping.under, filename.to_s.remove(filename.extname).remove(index_regex).presence ].compact.join("/")
145155
end
146156

147157
def module_path_from(filename, mapping)
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log("Sorry - no imports here!")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log("Sorry, nothing helpful here")

Diff for: test/importmap_test.rb

+8
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,18 @@ def setup
4444
assert_match %r|assets/controllers/index.*\.js|, generate_importmap_json["imports"]["controllers"]
4545
end
4646

47+
test "directory pin mounted under matching subdir doesn't map *_index as root" do
48+
assert_match %r|assets/controllers/special_index.*\.js|, generate_importmap_json["imports"]["controllers/special_index"]
49+
end
50+
4751
test "directory pin mounted under matching subdir maps index as root at second depth" do
4852
assert_match %r|assets/helpers/requests/index.*\.js|, generate_importmap_json["imports"]["helpers/requests"]
4953
end
5054

55+
test "directory pin mounted under matching subdir doesn't map *_index as root at second depth" do
56+
assert_match %r|assets/helpers/requests/special_index.*\.js|, generate_importmap_json["imports"]["helpers/requests/special_index"]
57+
end
58+
5159
test "directory pin under custom asset path" do
5260
assert_match %r|assets/spina/controllers/another_controller-.*\.js|, generate_importmap_json["imports"]["controllers/spina/another_controller"]
5361
assert_match %r|assets/spina/controllers/deeper/again_controller-.*\.js|, generate_importmap_json["imports"]["controllers/spina/deeper/again_controller"]

0 commit comments

Comments
 (0)