From 495f855b18e8ddf8be7d10f3a797de29cdf6ae91 Mon Sep 17 00:00:00 2001 From: Henrik N Date: Fri, 28 Nov 2008 12:42:19 +0100 Subject: [PATCH] Make Inflector#parameterize correctly squeeze multi-character separators. --- activesupport/lib/active_support/inflector.rb | 2 +- activesupport/test/inflector_test.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletions(-) diff --git a/activesupport/lib/active_support/inflector.rb b/activesupport/lib/active_support/inflector.rb index 683af45..298a23f 100644 --- a/activesupport/lib/active_support/inflector.rb +++ b/activesupport/lib/active_support/inflector.rb @@ -263,7 +263,7 @@ module ActiveSupport # 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) + parameterized_string.gsub!(/#{re_sep}{2,}/, sep) # Remove leading/trailing separator. parameterized_string.gsub!(/^#{re_sep}|#{re_sep}$/i, '') parameterized_string.downcase diff --git a/activesupport/test/inflector_test.rb b/activesupport/test/inflector_test.rb index d8c93dc..c48ad16 100644 --- a/activesupport/test/inflector_test.rb +++ b/activesupport/test/inflector_test.rb @@ -116,6 +116,12 @@ class InflectorTest < Test::Unit::TestCase 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)) -- 1.5.3.7