2012-04-26 46 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