aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Koziarski <michael@koziarski.com>2008-09-11 16:03:38 +0200
committerMichael Koziarski <michael@koziarski.com>2008-09-11 17:10:17 +0200
commit1ddde91303883b47f2215779cf45d7008377bd0d (patch)
treea1a389cba8c08504bad19fcf4d8340cc554e8cee
parent46bac29de7e39bd2af6ed6cfba0498a921b5213e (diff)
downloadrails-1ddde91303883b47f2215779cf45d7008377bd0d.tar.gz
rails-1ddde91303883b47f2215779cf45d7008377bd0d.tar.bz2
rails-1ddde91303883b47f2215779cf45d7008377bd0d.zip
Flesh out the parameterize method to support non-ascii text and underscores.
-rw-r--r--activesupport/lib/active_support/inflector.rb2
-rw-r--r--activesupport/test/inflector_test_cases.rb5
2 files changed, 5 insertions, 2 deletions
diff --git a/activesupport/lib/active_support/inflector.rb b/activesupport/lib/active_support/inflector.rb
index e5f0063285..8a917a9eb2 100644
--- a/activesupport/lib/active_support/inflector.rb
+++ b/activesupport/lib/active_support/inflector.rb
@@ -257,7 +257,7 @@ module ActiveSupport
# <%= link_to(@person.name, person_path %>
# # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
def parameterize(string, sep = '-')
- string.gsub(/[^a-z0-9]+/i, sep).downcase
+ string.chars.normalize(:kd).to_s.gsub(/[^\x00-\x7F]+/, '').gsub(/[^a-z0-9_\-]+/i, sep).downcase
end
# Create the name of a table like Rails does for models to table names. This method
diff --git a/activesupport/test/inflector_test_cases.rb b/activesupport/test/inflector_test_cases.rb
index d399c90385..8057809dbd 100644
--- a/activesupport/test/inflector_test_cases.rb
+++ b/activesupport/test/inflector_test_cases.rb
@@ -144,7 +144,10 @@ module InflectorTestCases
StringToParameterized = {
"Donald E. Knuth" => "donald-e-knuth",
- "Random text with *(bad)* characters" => "random-text-with-bad-characters"
+ "Random text with *(bad)* characters" => "random-text-with-bad-characters",
+ "Malmö" => "malmo",
+ "Garçons" => "garcons",
+ "Allow_Under_Scores" => "allow_under_scores"
}
UnderscoreToHuman = {