diff --git a/lib/noosfero/core_ext/string.rb b/lib/noosfero/core_ext/string.rb index 3a8f40c..fadf285 100644 --- a/lib/noosfero/core_ext/string.rb +++ b/lib/noosfero/core_ext/string.rb @@ -37,7 +37,7 @@ class String end def to_slug - transliterate.downcase.gsub(/[^a-z0-9~\s:;+=_."'`-]/, '').gsub(/[\s:;+=_"'`-]+/, '-').gsub(/-$/, '').gsub(/^-/, '').to_s + transliterate.downcase.gsub(/[^\w~\s:;+=_."'`-]/, '').gsub(/[\s:;+=_"'`-]+/, '-').gsub(/-$/, '').gsub(/^-/, '').to_s end end diff --git a/test/unit/string_core_ext_test.rb b/test/unit/string_core_ext_test.rb index 58c33a1..ce314e8 100644 --- a/test/unit/string_core_ext_test.rb +++ b/test/unit/string_core_ext_test.rb @@ -24,6 +24,10 @@ class StringCoreExtTest < Test::Unit::TestCase assert_equal 'a.b', 'a.b'.to_slug end + should 'handle multy-byte UTF-8 characters properly' do + assert_equal '日本語ローカライズチーム-home', '日本語ローカライズチーム_HOME'.to_slug + end + # tests for String#transliterate should 'transliterate' do assert_equal 'aaaaaaAAAAAeeeeEEOOoocaaaiIIiuuyYnNcC', 'ªáàäâåÁÀÄÂÅéèëêÊËÖÔöôçäàâîÏÎïûüÿŸñÑçÇ'.transliterate -- libgit2 0.21.2