| 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@221
 | 
    15   if path == "" then
 | 
| 
jbe@216
 | 
    16     return {module = "index", view = "index"}
 | 
| 
jbe@216
 | 
    17   end
 | 
| 
jbe@250
 | 
    18   local static = string.match(path, "^static/([-./0-9A-Z_a-z]+)$")
 | 
| 
jbe@250
 | 
    19   if static then
 | 
| 
jbe@250
 | 
    20     if
 | 
| 
jbe@250
 | 
    21       string.match(static, "^/") or
 | 
| 
jbe@250
 | 
    22       string.match(static, "//") or
 | 
| 
jbe@250
 | 
    23       string.match(static, "/$") or
 | 
| 
jbe@250
 | 
    24       string.match(static, "^%.%.?$") or
 | 
| 
jbe@250
 | 
    25       string.match(static, "/%.%.?$") or
 | 
| 
jbe@250
 | 
    26       string.match(static, "^%.%.?/") or
 | 
| 
jbe@250
 | 
    27       string.match(static, "/%.%.?/")  -- TODO: improve
 | 
| 
jbe@250
 | 
    28     then
 | 
| 
jbe@250
 | 
    29       return nil
 | 
| 
jbe@250
 | 
    30     else
 | 
| 
jbe@250
 | 
    31       return {static = static}
 | 
| 
jbe@250
 | 
    32     end
 | 
| 
jbe@250
 | 
    33   end
 | 
| 
jbe@250
 | 
    34   local module, action, view, id, suffix
 | 
| 
jbe@221
 | 
    35   module = string.match(path, "^([^/]+)/$")
 | 
| 
jbe@216
 | 
    36   if module then
 | 
| 
jbe@216
 | 
    37     return {module = module, view = "index"}
 | 
| 
jbe@215
 | 
    38   end
 | 
| 
jbe@221
 | 
    39   module, action = string.match(path, "^([^/]+)/([^/.]+)$")
 | 
| 
jbe@216
 | 
    40   if module then
 | 
| 
jbe@216
 | 
    41     return {module = module, action = action}
 | 
| 
jbe@215
 | 
    42   end
 | 
| 
jbe@221
 | 
    43   module, view, suffix = string.match(path, "^([^/]+)/([^/.]+)%.([^/]+)$")
 | 
| 
jbe@216
 | 
    44   if module then
 | 
| 
jbe@216
 | 
    45     return {module = module, view = view, suffix = suffix}
 | 
| 
jbe@216
 | 
    46   end
 | 
| 
jbe@221
 | 
    47   module, view, id, suffix = string.match(path, "^([^/]+)/([^/]+)/([^/.]+)%.([^/]+)$")
 | 
| 
jbe@216
 | 
    48   if module then
 | 
| 
jbe@216
 | 
    49     return {module = module, view = view, id = id, suffix = suffix}
 | 
| 
jbe@216
 | 
    50   end
 | 
| 
jbe@216
 | 
    51   return nil
 | 
| 
jbe@216
 | 
    52 end
 | 
| 
jbe@210
 | 
    53 
 | 
| 
jbe@216
 | 
    54 --//--
 |