2014-01-07 31 views
3

我是新来的,所以忍受着我,但我想做一个规则,在Firefox选项卡上使用arbtt v0.7在categorize.cfg中分割出我的时间:arbtt嵌套如果然后其他在categorize.cfg

-- Firefox 
current window ($program == "Navigator") ==> 
    if $title =~ /^(.*) - (.*@.*) - .* Mail - Mozilla Firefox$/ then tag Email:$2-$1 else 
    if $title =~ /^(.*) - Calendar - Mozilla Firefox$/   then tag Calendar:$1 else 
    if $title =~ /^(.*) - Mozilla Firefox$/      then tag Firefox:$1 else 
                    tag Firefox, 

,但我得到:

Parser error: "/home/rich/.arbtt/categorize.cfg" (line 29, column 3): unexpected "i" expecting "else"

我也试图与更多的成功的另一种方法:

current window ($program == "Navigator" && $title =~ /^(.*) - (.*@.*) - .* Mail - Mozilla Firefox$/) 
    ==> tag Email:$2-$1, 
current window ($program == "Navigator" && $title =~ /^(.*) - Calendar - Mozilla Firefox$/) 
    ==> tag Calendar:$1, 
current window ($program == "Navigator" && $title =~ /^((?!.*\b(Calendar|Mail)\b)) - Mozilla Firefox$/) 
    ==> tag Firefox:$1, 

但最后一句d不会返回任何结果;前两个条款。

干杯, 丰富

+0

错误提交在https://bitbucket.org/nomeata/arbtt/issue/4/parsing-of-if-then-else-fails和https://bitbucket.org/nomeata/arbtt/issue/5/解析失败 –

+0

嗯,现在有两个问题,不是吗?我不确定是否所有这些正则表达式都被底层库支持([pcre-light](http://hackage.haskell.org/package/pcre-light))。 –

+0

啊,不应该是'/^(?!.*\b(Calendar|Mail)\b)(.*) - Mozilla Firefox $ /' - '(?!...)宽度模式...但我很惭愧,使用';'的变体不起作用。也许这需要转移到arbtt邮件列表或bug跟踪器。 –

回答

1

它看起来像在arbtt的错误;我同意你的代码看起来正确。

但不管怎么说,它可能是更地道使用;运营商,这意味着“尝试的第一件事情,如果它不分配一个标签,尝试第二件事”:

current window ($program == "Navigator") ==> 
    { $title =~ /^(.*) - (.*@.*) - .* Mail - Mozilla Firefox$/ ==> tag Email:$2-$1;; 
    $title =~ /^(.*) - Calendar - Mozilla Firefox$/   ==> tag Calendar:$1; 
    $title =~ /^(.*) - Mozilla Firefox$/      ==> tag Firefox:$1; 
    tag Firefox }, 

(该;;是因为在解析器另一个bug的 - 猜那一部分还没有被使用了很多至今)

在你的第二次尝试,根本就与正则表达式的一个问题:它应该是/^(?!.*\b(Calendar|Mail)\b)(.*) - Mozilla Firefox$/ - (?!...)是零。宽度模式。

+0

感谢您的回答。虽然解析器接受它,但我没有得到任何匹配的条目。我用另一种几乎可行的方法编辑上面的内容。 – racitup