diff options
author | Henrik N <henrik@nyh.se> | 2009-03-10 21:36:46 +0000 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2009-03-10 21:36:46 +0000 |
commit | ea0e41d8fa5a132a2d2771e9785833b7663203ac (patch) | |
tree | 3cde4953b277d9977797ed1d5c21fc7fcacf8153 /activesupport/lib | |
parent | 4b4e7caffa361a1a3317586d8f498b4ba353adba (diff) | |
download | rails-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')
-rw-r--r-- | activesupport/lib/active_support/inflector.rb | 12 |
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 |