Commit 1cfc5e1db92a7dae8d8e34723443a453575e208c
1 parent
ff995715
Exists in
master
and in
28 other branches
Fix String#to_slug to work with multi-byte UTF-8 characters
Showing
2 changed files
with
5 additions
and
1 deletions
Show diff stats
lib/noosfero/core_ext/string.rb
| @@ -37,7 +37,7 @@ class String | @@ -37,7 +37,7 @@ class String | ||
| 37 | end | 37 | end |
| 38 | 38 | ||
| 39 | def to_slug | 39 | def to_slug |
| 40 | - transliterate.downcase.gsub(/[^a-z0-9~\s:;+=_."'`-]/, '').gsub(/[\s:;+=_"'`-]+/, '-').gsub(/-$/, '').gsub(/^-/, '').to_s | 40 | + transliterate.downcase.gsub(/[^\w~\s:;+=_."'`-]/, '').gsub(/[\s:;+=_"'`-]+/, '-').gsub(/-$/, '').gsub(/^-/, '').to_s |
| 41 | end | 41 | end |
| 42 | 42 | ||
| 43 | end | 43 | end |
test/unit/string_core_ext_test.rb
| @@ -24,6 +24,10 @@ class StringCoreExtTest < Test::Unit::TestCase | @@ -24,6 +24,10 @@ class StringCoreExtTest < Test::Unit::TestCase | ||
| 24 | assert_equal 'a.b', 'a.b'.to_slug | 24 | assert_equal 'a.b', 'a.b'.to_slug |
| 25 | end | 25 | end |
| 26 | 26 | ||
| 27 | + should 'handle multy-byte UTF-8 characters properly' do | ||
| 28 | + assert_equal '日本語ローカライズチーム-home', '日本語ローカライズチーム_HOME'.to_slug | ||
| 29 | + end | ||
| 30 | + | ||
| 27 | # tests for String#transliterate | 31 | # tests for String#transliterate |
| 28 | should 'transliterate' do | 32 | should 'transliterate' do |
| 29 | assert_equal 'aaaaaaAAAAAeeeeEEOOoocaaaiIIiuuyYnNcC', 'ªáàäâåÁÀÄÂÅéèëêÊËÖÔöôçäàâîÏÎïûüÿŸñÑçÇ'.transliterate | 33 | assert_equal 'aaaaaaAAAAAeeeeEEOOoocaaaiIIiuuyYnNcC', 'ªáàäâåÁÀÄÂÅéèëêÊËÖÔöôçäàâîÏÎïûüÿŸñÑçÇ'.transliterate |