domingo, 10 de mayo de 2009

Bloque T2.10

Bueno, este bloque es hacer un filtro SAX que tradujera el sistema de etiquetas que teníamos para el archivo jugadores.xml al inglés en ruby. Para eso hemos definido un diccionario, y cada vez que se encuentra una etiqueta ya definida en español, la cambia por una etiqueta en inglés.

#!/usr/bin/ruby
require 'rexml/document'
require 'rexml/streamlistener'
include REXML

#Para usar con jugadores.xml

entrada=ARGV[0]

diccionario = {"entrenador"=>"coach",
"lista_jugadores"=>"players_list",
"jugador" => "player",
"equipo"=>"team" }

class Traduce
include StreamListener
def initialize(dic)
@escribe = false
@diccionario = dic
end

def tag_start(name, attributes)
puts "<"+@diccionario[name]+">"
@escribe = true
end

def tag_end(name)
puts "</"+@diccionario[name]+">"
@escribe=false
end

def text(texto)
if @escribe
if @diccionario[texto]
puts @diccionario[texto]
else
puts texto
end
end
end
end

print "Content-Type: application/xhtml+xml\n\n"

listener = Traduce.new(diccionario)
parser = Parsers::StreamParser.new(File.new(entrada), listener)
parser.parse

No hay comentarios:

Publicar un comentario