Skip to content

Commit d757881

Browse files
authored
Merge pull request rails#54685 from Earlopain/optimize-parameterize
Optimize `String#parameterize`
2 parents 90d4003 + f2dfbd6 commit d757881

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

activesupport/lib/active_support/inflector/transliterate.rb

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -128,18 +128,16 @@ def parameterize(string, separator: "-", preserve_case: false, locale: nil)
128128
parameterized_string.gsub!(/[^a-z0-9\-_]+/i, separator)
129129

130130
unless separator.nil? || separator.empty?
131-
if separator == "-"
132-
re_duplicate_separator = /-{2,}/
133-
re_leading_trailing_separator = /^-|-$/i
131+
# No more than one of the separator in a row.
132+
if separator.length == 1
133+
parameterized_string.squeeze!(separator)
134134
else
135135
re_sep = Regexp.escape(separator)
136-
re_duplicate_separator = /#{re_sep}{2,}/
137-
re_leading_trailing_separator = /^#{re_sep}|#{re_sep}$/i
136+
parameterized_string.gsub!(/#{re_sep}{2,}/, separator)
138137
end
139-
# No more than one of the separator in a row.
140-
parameterized_string.gsub!(re_duplicate_separator, separator)
141138
# Remove leading/trailing separator.
142-
parameterized_string.gsub!(re_leading_trailing_separator, "")
139+
parameterized_string.delete_prefix!(separator)
140+
parameterized_string.delete_suffix!(separator)
143141
end
144142

145143
parameterized_string.downcase! unless preserve_case

0 commit comments

Comments
 (0)