Commit 1cfc5e1db92a7dae8d8e34723443a453575e208c
1 parent
ff995715
Exists in
master
and in
29 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 | 37 | end |
38 | 38 | |
39 | 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 | 41 | end |
42 | 42 | |
43 | 43 | end | ... | ... |
test/unit/string_core_ext_test.rb
... | ... | @@ -24,6 +24,10 @@ class StringCoreExtTest < Test::Unit::TestCase |
24 | 24 | assert_equal 'a.b', 'a.b'.to_slug |
25 | 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 | 31 | # tests for String#transliterate |
28 | 32 | should 'transliterate' do |
29 | 33 | assert_equal 'aaaaaaAAAAAeeeeEEOOoocaaaiIIiuuyYnNcC', 'ªáàäâåÁÀÄÂÅéèëêÊËÖÔöôçäàâîÏÎïûüÿŸñÑçÇ'.transliterate | ... | ... |