Skip to content

Commit 20d3892

Browse files
samgranierilifo
authored andcommitted
Allow String#parameterize to accept a separator [#2157 state:resolved]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
1 parent 7fb7b48 commit 20d3892

File tree

3 files changed

+36
-2
lines changed

3 files changed

+36
-2
lines changed

activesupport/lib/active_support/core_ext/string/inflections.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ def demodulize
102102
#
103103
# <%= link_to(@person.name, person_path %>
104104
# # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
105-
def parameterize
106-
Inflector.parameterize(self)
105+
def parameterize(sep = '-')
106+
Inflector.parameterize(self, sep)
107107
end
108108

109109
# Creates the name of a table like Rails does for models to table names. This method

activesupport/test/core_ext/string_ext_test.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,24 @@ def test_classify
7777
end
7878
end
7979

80+
def test_string_parameterized_normal
81+
StringToParameterized.each do |normal, slugged|
82+
assert_equal(normal.parameterize, slugged)
83+
end
84+
end
85+
86+
def test_string_parameterized_no_separator
87+
StringToParameterizeWithNoSeparator.each do |normal, slugged|
88+
assert_equal(normal.parameterize(''), slugged)
89+
end
90+
end
91+
92+
def test_string_parameterized_underscore
93+
StringToParameterizeWithUnderscore.each do |normal, slugged|
94+
assert_equal(normal.parameterize('_'), slugged)
95+
end
96+
end
97+
8098
def test_humanize
8199
UnderscoreToHuman.each do |underscore, human|
82100
assert_equal(human, underscore.humanize)

activesupport/test/inflector_test_cases.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,22 @@ module InflectorTestCases
154154
"Squeeze separators" => "squeeze-separators"
155155
}
156156

157+
StringToParameterizeWithNoSeparator = {
158+
"Donald E. Knuth" => "donaldeknuth",
159+
"Random text with *(bad)* characters" => "randomtextwithbadcharacters",
160+
"Trailing bad characters!@#" => "trailingbadcharacters",
161+
"!@#Leading bad characters" => "leadingbadcharacters",
162+
"Squeeze separators" => "squeezeseparators"
163+
}
164+
165+
StringToParameterizeWithUnderscore = {
166+
"Donald E. Knuth" => "donald_e_knuth",
167+
"Random text with *(bad)* characters" => "random_text_with_bad_characters",
168+
"Trailing bad characters!@#" => "trailing_bad_characters",
169+
"!@#Leading bad characters" => "leading_bad_characters",
170+
"Squeeze separators" => "squeeze_separators"
171+
}
172+
157173
# Ruby 1.9 doesn't do Unicode normalization yet.
158174
if RUBY_VERSION >= '1.9'
159175
StringToParameterizedAndNormalized = {

0 commit comments

Comments
 (0)