Bonsoir,
> def to_ascii
> Iconv.new('ASCII//TRANSLIT', 'UTF-8').iconv(self)
> end
> if "é".to_ascii != "e"
> def to_ascii
> # ... remplacements avec gsub
> end
> end
>
A toutes fins utiles et vu que Iconv ne marche pas partout, j'ai de
mon côté ceci (dont je ne suis pas tout à fait satisfait, mais qui
marche raisonnablement bien dans mes cas):
====================
module DiacriticsFu
def self.escape(str)
ActiveSupport::Multibyte::Handlers::UTF8Handler.normalize(str,:d).split(//
u).reject { |e| e.length > 1 }.join
end
end
====================
Les tests:
====================
require File.dirname(__FILE__) + '/../spec_helper'
require 'diacritics_fu'
describe "DiacriticsFu.escape" do
it "should remove the accents with grace" do
DiacriticsFu::escape("éphémère").should eql("ephemere")
DiacriticsFu::escape("éêèïîù").should eql("eeeiiu")
end
KNOWN_DIACRITICS = { "a" => "àäâ", "e" => "éèêë", "i" => "îï", "o"
=> "ôö", "u" => "üû", "c" => "ç",
"I" => "ÏÎ", "E" => "ÊË", "n" => "ñ", "O" =>
"ÔÖ", "Y" => "", "y" => "ÿ", "N" => "Ñ" }
KNOWN_DIACRITICS.each do |expected_replacement,originals|
it "should transform any of '#{originals}' into
'#{expected_replacement}'" do
originals.split(//).each do |original|
DiacriticsFu.escape(original).should eql(expected_replacement)
end
end
end
end
====================
C'est un besoin quand même assez répandu, est-ce que quelqu'un connaît
une petite gem simple qui ferait ce genre de chose directement ?
-- Thibaut
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---