#!/usr/bin/ruby # Par oxman, pour tout contact -> tulklut@bouh.org def tulklutization (sentence) ponctuations = Regexp::escape(" '\",.:;!?{}[])(") ttMaj = "A-ZÉÈÊËÀÂÄÛÜÎÏÔÖ¾ÙÇ" sentenceR = "" sentenceOrig = sentence.join(" ") sentenceSplit = sentenceOrig.split(/[#{ponctuations}]/) # créer le tableau contenant les différents délimiteurs # utilisés pour couper la phrase delimiteurs = Array.new i = 0 sentenceOrig.split("").each do |c| delimiteurs.push(c) if c != sentenceSplit.join(" ")[i,1] || c == " " i += 1 end sentenceSplit.each do |word| if /[#{ttMaj}]/.match(word[0,1]) word[-1] = swpCase(word[-1,1]) word[0] = swpCase(word[0,1]) end sentenceR += word.reverse + delimiteurs.shift.to_s end sentenceR += delimiteurs.join("") if delimiteurs.length > 0 return sentenceR end def swpCase (car) newCar = case car when "Ç" "ç" when "É" "é" when "È" "è" when "Ê" "ê" when "Ë" "ë" when "À" "à" when "Â" "â" when "Ä" "ä" when "Û" "û" when "Ü" "ü" when "Î" "î" when "Ï" "ï" when "Ô" "ô" when "Ö" "ö" when "¾" "ÿ" when "Ù" "ù" when "ç" "Ç" when "é" "É" when "è" "È" when "ê" "Ê" when "ë" "Ë" when "à" "À" when "â" "Â" when "ä" "Ä" when "û" "Û" when "ü" "Ü" when "î" "Î" when "ï" "Ï" when "ô" "Ô" when "ö" "Ö" when "ÿ" "¾" when "ù" "Ù" else car.swapcase end return newCar end if (ARGV.length > 0) puts tulklutization(ARGV) else STDIN.each_line do |line| puts tulklutization(line.strip!.split(" ")) end end