Para los que hablan Ruby (era Re: Syntax highlighting:)

Alvaro Herrera alvherre en alvh.no-ip.org
Lun Mayo 10 10:38:22 CLT 2010


Excerpts from Alvaro Herrera's message of vie may 07 23:49:11 -0400 2010:

> Hmm, se me ocurre que si llegara a necesitar más de un label para una
> dirección, podría poner un array como valor, o sea
>     "aldrin.martoq"        => [ 'ex-dcc', 'linuxero-top' ],
> 
> y modificar el código del each para que invoque add_label una vez para cada
> elemento del array (supongo que habrá un operador "type of")

Todavía no he hecho eso, pero está claro que lo voy a necesitar.  Lo que
sí hice fue evitarme tener que poner una regla para cada lista de
PostgreSQL.  Para esto, agregué la posibilidad de tener reglas de
etiquetado más complejas:

rcpt_eval_rules = {
	"pgsql-([^@]*)@postgresql.org" => 'sprintf("pg-%s", $1)'
}

y en el bucle que aplica las etiquetas, se procesa de esta forma:

message.recipients.each { |rcpt|
	rcpt_eval_rules.each { |addr, expr|
		if rcpt.email =~ Regexp.new(addr)
			message.add_label(eval(expr))
			break
		end
	}
}

El truco es hacer "eval" de la expresión "valor" del hash, y agregar el
resultado como etiqueta.

(Nota: cambié el "rcpt.mail =~ /#{addr}/" por Regexp.new(), lo cual es
claramente más agradable a la vista).
-- 


Más información sobre la lista de distribución Linux