aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activesupport/lib/active_support/core_ext/string/inflections.rb4
-rw-r--r--activesupport/test/core_ext/string_ext_test.rb18
-rw-r--r--activesupport/test/inflector_test_cases.rb16
3 files changed, 36 insertions, 2 deletions
diff --git a/activesupport/lib/active_support/core_ext/string/inflections.rb b/activesupport/lib/active_support/core_ext/string/inflections.rb
index 15ad3d99cc..48e812aaf8 100644
--- a/activesupport/lib/active_support/core_ext/string/inflections.rb
+++ b/activesupport/lib/active_support/core_ext/string/inflections.rb
@@ -102,8 +102,8 @@ module ActiveSupport #:nodoc:
#
# <%= link_to(@person.name, person_path %>
# # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
- def parameterize
- Inflector.parameterize(self)
+ def parameterize(sep = '-')
+ Inflector.parameterize(self, sep)
end
# Creates the name of a table like Rails does for models to table names. This method
diff --git a/activesupport/test/core_ext/string_ext_test.rb b/activesupport/test/core_ext/string_ext_test.rb
index e232bf8384..6c9b7e7236 100644
--- a/activesupport/test/core_ext/string_ext_test.rb
+++ b/activesupport/test/core_ext/string_ext_test.rb
@@ -77,6 +77,24 @@ class StringInflectionsTest < Test::Unit::TestCase
end
end
+ def test_string_parameterized_normal
+ StringToParameterized.each do |normal, slugged|
+ assert_equal(normal.parameterize, slugged)
+ end
+ end
+
+ def test_string_parameterized_no_separator
+ StringToParameterizeWithNoSeparator.each do |normal, slugged|
+ assert_equal(normal.parameterize(''), slugged)
+ end
+ end
+
+ def test_string_parameterized_underscore
+ StringToParameterizeWithUnderscore.each do |normal, slugged|
+ assert_equal(normal.parameterize('_'), slugged)
+ end
+ end
+
def test_humanize
UnderscoreToHuman.each do |underscore, human|
assert_equal(human, underscore.humanize)
diff --git a/activesupport/test/inflector_test_cases.rb b/activesupport/test/inflector_test_cases.rb
index b7ac467c37..584cbff3e7 100644
--- a/activesupport/test/inflector_test_cases.rb
+++ b/activesupport/test/inflector_test_cases.rb
@@ -154,6 +154,22 @@ module InflectorTestCases
"Squeeze separators" => "squeeze-separators"
}
+ StringToParameterizeWithNoSeparator = {
+ "Donald E. Knuth" => "donaldeknuth",
+ "Random text with *(bad)* characters" => "randomtextwithbadcharacters",
+ "Trailing bad characters!@#" => "trailingbadcharacters",
+ "!@#Leading bad characters" => "leadingbadcharacters",
+ "Squeeze separators" => "squeezeseparators"
+ }
+
+ StringToParameterizeWithUnderscore = {
+ "Donald E. Knuth" => "donald_e_knuth",
+ "Random text with *(bad)* characters" => "random_text_with_bad_characters",
+ "Trailing bad characters!@#" => "trailing_bad_characters",
+ "!@#Leading bad characters" => "leading_bad_characters",
+ "Squeeze separators" => "squeeze_separators"
+ }
+
# Ruby 1.9 doesn't do Unicode normalization yet.
if RUBY_VERSION >= '1.9'
StringToParameterizedAndNormalized = {