2012-04-26 47 views
3

我正在写我的第一个Opa应用程序。我正在尝试为url处理设置一个匹配项。代码如下:Opa匹配模式或

function start(url) 
{ 
    match (url) 
    { 
     case {path:[] ...}: Resource.page("Home", home()) 
     case {...}: Resource.page("nofindy", nofindy()) 
    } 
} 
Server.start(Server.http, { dispatch: start }) 

它像一个魅力,但现在我想能够做同义映射。例如,我希望不仅能够/去主页,还能够/ home。

有没有一个简洁的方法来做到这一点,也许与一个OR运算符,或者我需要设置不同的情况下,都触发相同的资源?

TL;博士:有没有更好的方式来写下面的代码片段:

case {path:[] ...}: Resource.page("Home", home()) 
case {path:["home"] ...}: Resource.page("Home", home()) 

回答

3

您应该使用的custom代替dispatch

function start(v){ 
    Resource.page(v, <h1>{v}</h1>) 
} 

urls = parser { 
    case ("/" | "/home") : start("home") 
    case .* : start("other") 
} 

Server.start(Server.http, {custom: urls}) 

了解更多关于解析器在这里: http://doc.opalang.org/manual/The-core-language/Parser