Commit 1cfc5e1db92a7dae8d8e34723443a453575e208c

Authored by Antonio Terceiro
1 parent ff995715

Fix String#to_slug to work with multi-byte UTF-8 characters

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