Commit c512c2109dff63f6ff6fe3518359192759640b15

Authored by AntonioTerceiro
1 parent ba3df928

ActionItem70: transliterating UTF-8 strings



git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@518 3f533792-8f58-4932-b0fe-aaf55b0a4547
lib/noosfero/transliterations.rb 0 → 100644
... ... @@ -0,0 +1,39 @@
  1 +module Noosfero::Transliterations
  2 +
  3 + TRANSLATION = {
  4 + [ 'Á', 'À', 'À', 'Â', 'Ã', 'Ä' ] => 'A',
  5 + [ 'á', 'à', 'à', 'â', 'ã', 'ä', 'ª' ] => 'a',
  6 + [ 'É', 'È', 'Ê', 'Ë' ] => 'E',
  7 + [ 'é', 'è', 'ê', 'ë' ] => 'e',
  8 + [ 'Í', 'Ì', 'Î', 'Ï' ] => 'I',
  9 + [ 'í', 'ì', 'î', 'ï' ] => 'i',
  10 + [ 'Ó', 'Ò', 'Ô', 'Ö', 'Õ', 'º' ] => 'O',
  11 + [ 'ó', 'ò', 'ô', 'ö', 'õ', 'º' ] => 'o',
  12 + [ 'Ú', 'Ù', 'Û', 'Ü' ] => 'U',
  13 + [ 'ú', 'ù', 'û', 'ü' ] => 'u',
  14 + [ 'Ç' ] => 'C',
  15 + [ 'ç' ] => 'c',
  16 + [ 'Ñ' ] => 'N',
  17 + [ 'ñ' ] => 'n',
  18 + [ 'Ÿ' ] => 'Y',
  19 + [ 'ÿ' ] => 'y',
  20 + }
  21 +
  22 + # transliterate a string (assumed to be contain UTF-8 data)
  23 + # into ASCII by replacing non-ascii characters to their
  24 + # ASCII.
  25 + #
  26 + # The transliteration is, of course, lossy, and its performance is poor.
  27 + def transliterate
  28 +
  29 + new = self.clone
  30 + Noosfero::Transliterations::TRANSLATION.each { |from,to|
  31 + from.each { |seq|
  32 + new.gsub!(seq, to)
  33 + }
  34 + }
  35 + new
  36 + end
  37 +end
  38 +
  39 +String.send(:include, Noosfero::Transliterations)
... ...
test/unit/transliterations_test.rb 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +require 'noosfero/transliterations'
  3 +
  4 +class TransliterationsTest < Test::Unit::TestCase
  5 +
  6 + def test_should_transliterate
  7 + assert_equal 'eeeeEEOOoocaaaiIIiuuyYnN', 'éèëêÊËÖÔöôçäàâîÏÎïûüÿŸñÑ'.transliterate
  8 + end
  9 +
  10 +
  11 +end
... ...