From 1cfc5e1db92a7dae8d8e34723443a453575e208c Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Mon, 11 Oct 2010 13:01:48 -0300 Subject: [PATCH] Fix String#to_slug to work with multi-byte UTF-8 characters --- lib/noosfero/core_ext/string.rb | 2 +- test/unit/string_core_ext_test.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) 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