Permalink
Browse files

Make Inflector#parameterize correctly squeeze multi-character separat…

…ors [#1489 state:resolved]

Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
  • Loading branch information...
1 parent 4b4e7ca commit ea0e41d8fa5a132a2d2771e9785833b7663203ac @henrik henrik committed with lifo Mar 10, 2009
Showing with 13 additions and 5 deletions.
  1. +7 −5 activesupport/lib/active_support/inflector.rb
  2. +6 −0 activesupport/test/inflector_test.rb
View
12 activesupport/lib/active_support/inflector.rb
@@ -257,15 +257,17 @@ def demodulize(class_name_in_module)
# <%= link_to(@person.name, person_path(@person)) %>
# # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
def parameterize(string, sep = '-')
- re_sep = Regexp.escape(sep)
# replace accented chars with ther ascii equivalents
parameterized_string = transliterate(string)
# Turn unwanted chars into the seperator
parameterized_string.gsub!(/[^a-z0-9\-_\+]+/i, sep)
- # No more than one of the separator in a row.
- parameterized_string.squeeze!(sep)
- # Remove leading/trailing separator.
- parameterized_string.gsub!(/^#{re_sep}|#{re_sep}$/i, '')
+ unless sep.blank?
+ re_sep = Regexp.escape(sep)
+ # No more than one of the separator in a row.
+ parameterized_string.gsub!(/#{re_sep}{2,}/, sep)
+ # Remove leading/trailing separator.
+ parameterized_string.gsub!(/^#{re_sep}|#{re_sep}$/i, '')
+ end
parameterized_string.downcase
end
View
6 activesupport/test/inflector_test.rb
@@ -116,6 +116,12 @@ def test_parameterize_with_custom_separator
end
end
+ def test_parameterize_with_multi_character_separator
+ StringToParameterized.each do |some_string, parameterized_string|
+ assert_equal(parameterized_string.gsub('-', '__sep__'), ActiveSupport::Inflector.parameterize(some_string, '__sep__'))
+ end
+ end
+
def test_classify
ClassNameToTableName.each do |class_name, table_name|
assert_equal(class_name, ActiveSupport::Inflector.classify(table_name))

0 comments on commit ea0e41d

Please sign in to comment.