Comecei a refinar minhas regras de peneira recentemente e fiquei um pouco inseguro sobre como :contains
realmente funciona. Eu verifiquei o link mas ele ainda não esclareceu a questão que eu tinha.
Digamos que eu tenha a seguinte regra:
if
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] [
"ros-dev.reactos.org",
"ros-general.reactos.org"
]
{
fileinto "Lists/ReactOS";
stop;
}
isso significa (e que seria minha ideia de como eu quero que ele funcione) automaticamente qualquer um dos campos de cabeçalho listados ["List-Id", "X-Mailinglist", "X-Mailing-List"]
deve conter qualquer um dos valores dados ["ros-dev.reactos.org", "ros-general.reactos.org"]
ou preciso dizer explicitamente if anyof (...)
assim:
if anyof (
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] [
"ros-dev.reactos.org",
"ros-general.reactos.org"
]
)
{
fileinto "Lists/ReactOS";
stop;
}
... para este resultado desejado? Ou as duas listas não correspondem a cada elemento do primeiro em relação a cada elemento da segunda lista mesmo assim ?
NB: sei que as condições separadas por vírgula são afetadas por anyof
e allof
, respectivamente. Então if anyof (condition1, condition2)
significa (pseudo-código) if (condition1 or condition2)
e if allof (condition1, condition2)
significa if (condition1 and condition2)
. Entender este aspecto não é meu problema.
O que eu não consigo entender, no entanto, é se anyof
e allof
influenciam respectivamente um ou ambos das listas em uma cláusula :contains
. No exemplo acima, há uma lista para os campos de cabeçalho e uma lista de valores a serem comparados.
Essencialmente, a questão se resume a haver ou não uma diferença semântica entre os dois trechos acima. E se não, então se o primeiro significa isso:
if anyof (
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] "ros-dev.reactos.org",
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] "ros-general.reactos.org"
)
{
fileinto "Lists/ReactOS";
stop;
}
... ou isto:
if allof (
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] "ros-dev.reactos.org",
header :contains ["List-Id", "X-Mailinglist", "X-Mailing-List"] "ros-general.reactos.org"
)
{
fileinto "Lists/ReactOS";
stop;
}
... ou algo completamente diferente.