aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/inflector.rb
diff options
context:
space:
mode:
authorHenrik N <henrik@nyh.se>2009-03-10 21:36:46 +0000
committerPratik Naik <pratiknaik@gmail.com>2009-03-10 21:36:46 +0000
commitea0e41d8fa5a132a2d2771e9785833b7663203ac (patch)
tree3cde4953b277d9977797ed1d5c21fc7fcacf8153 /activesupport/lib/active_support/inflector.rb
parent4b4e7caffa361a1a3317586d8f498b4ba353adba (diff)
downloadrails-ea0e41d8fa5a132a2d2771e9785833b7663203ac.tar.gz
rails-ea0e41d8fa5a132a2d2771e9785833b7663203ac.tar.bz2
rails-ea0e41d8fa5a132a2d2771e9785833b7663203ac.zip
Make Inflector#parameterize correctly squeeze multi-character separators [#1489 state:resolved]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
Diffstat (limited to 'activesupport/lib/active_support/inflector.rb')
-rw-r--r--activesupport/lib/active_support/inflector.rb12
1 files changed, 7 insertions, 5 deletions
diff --git a/activesupport/lib/active_support/inflector.rb b/activesupport/lib/active_support/inflector.rb
index 5ff6f50fb3..3ed30bdf56 100644
--- a/activesupport/lib/active_support/inflector.rb
+++ b/activesupport/lib/active_support/inflector.rb
@@ -257,15 +257,17 @@ module ActiveSupport
# <%= 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