Para los que hablan Ruby (era Re: Syntax highlighting:)
Alvaro Herrera
alvherre en alvh.no-ip.org
Vie Mayo 7 23:49:11 CLT 2010
Excerpts from Aldrin Martoq's message of vie may 07 21:58:44 -0400 2010:
> No soy experto en ruby, pero hasta donde ví algo mas simple podría ser:
>
> --ini-----
> simple_rules = {}
> simple_rules["@lists.debian.org"] = "debian"
> simple_rules["linux en listas.inf.utfsm.cl"] = "linux"
>
> simple_rules.each { |k, v|
> puts k + " => " + v
> }
> -----fin--
Ya encontré cómo hacerlo, gracias a tu idea de usar YAML: en vez de tener
un array de hashs, es mejor tener un hash donde la dirección es la llave y
la etiqueta es el valor. La desventaja obvia es que no puedo tener más
de una etiqueta asociada a una dirección, pero por el momento creo que
no lo necesito.
El código es así:
simple_rules = {
"@lists.debian.org" => 'debian',
"linux en listas.inf.utfsm.cl" => 'linux',
"pgsql-committers en postgresql.org" => 'pg-commiters',
"pgsql-hackers en postgresql.org" => 'pg-hackers',
"pgsql-general en postgresql.org" => 'pg-general',
"pgsql-es-ayuda en postgresql.org" => 'pg-es-ayuda',
"pgsql-es-fomento en postgresql.org" => 'pg-es-fomento',
"pgsql-security en postgresql.org" => 'pg-SECURITY'
}
message.recipients.each { |rcpt|
simple_rules.each { |addr, label|
if rcpt =~ /#{addr}/
message.add_label label
break
end
}
}
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")
Gracias por la inspiración! Saludos a los gatos y gatas.
--
Más información sobre la lista de distribución Linux