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