annotate framework/env/request/default_router.lua @ 216:fd0360594636
Work on request.process(...), request.default_router(...), request.router(), request.handler(...)
 | author | 
 jbe | 
 | date | 
 Mon Jan 12 03:02:26 2015 +0100 (2015-01-12) | 
 | parents | 
 ba3dd4a17e3d  | 
 | children | 
 25a20bd1f416  | 
 
 | rev | 
   line source | 
| 
jbe@216
 | 
     1 --[[--
 | 
| 
jbe@216
 | 
     2 route =
 | 
| 
jbe@216
 | 
     3 request.default_router(
 | 
| 
jbe@216
 | 
     4   path                   -- URL path, including a leading slash
 | 
| 
jbe@216
 | 
     5 )
 | 
| 
jbe@210
 | 
     6 
 | 
| 
jbe@216
 | 
     7 Default conversion from a path to a route. Called by request.router().
 | 
| 
jbe@216
 | 
     8 
 | 
| 
jbe@216
 | 
     9 --]]--
 | 
| 
jbe@215
 | 
    10 
 | 
| 
jbe@215
 | 
    11 function request.default_router(path)
 | 
| 
jbe@216
 | 
    12   if not path then
 | 
| 
jbe@216
 | 
    13     return nil
 | 
| 
jbe@216
 | 
    14   end
 | 
| 
jbe@216
 | 
    15   if not string.match(path, "^/") then
 | 
| 
jbe@216
 | 
    16     path = "/" .. path
 | 
| 
jbe@216
 | 
    17   end
 | 
| 
jbe@216
 | 
    18   if path == "/" then
 | 
| 
jbe@216
 | 
    19     return {module = "index", view = "index"}
 | 
| 
jbe@216
 | 
    20   end
 | 
| 
jbe@216
 | 
    21   module = string.match(path, "^/([^/]+)/$")
 | 
| 
jbe@216
 | 
    22   if module then
 | 
| 
jbe@216
 | 
    23     return {module = module, view = "index"}
 | 
| 
jbe@215
 | 
    24   end
 | 
| 
jbe@216
 | 
    25   module, action = string.match(path, "^/([^/]+)/([^/.]+)$")
 | 
| 
jbe@216
 | 
    26   if module then
 | 
| 
jbe@216
 | 
    27     return {module = module, action = action}
 | 
| 
jbe@215
 | 
    28   end
 | 
| 
jbe@216
 | 
    29   module, view, suffix = string.match(path, "^/([^/]+)/([^/.]+)%.([^/]+)$")
 | 
| 
jbe@216
 | 
    30   if module then
 | 
| 
jbe@216
 | 
    31     return {module = module, view = view, suffix = suffix}
 | 
| 
jbe@216
 | 
    32   end
 | 
| 
jbe@216
 | 
    33   module, view, id, suffix = string.match(path, "^/([^/]+)/([^/]+)/([^/.]+)%.([^/]+)$")
 | 
| 
jbe@216
 | 
    34   if module then
 | 
| 
jbe@216
 | 
    35     return {module = module, view = view, id = id, suffix = suffix}
 | 
| 
jbe@216
 | 
    36   end
 | 
| 
jbe@216
 | 
    37   return nil
 | 
| 
jbe@216
 | 
    38 end
 | 
| 
jbe@210
 | 
    39 
 | 
| 
jbe@216
 | 
    40 --//--
 |