popcorn :: AppRoute :: resolve_path
uri
.For strict routes, it returns the path unchanged:
var route = new AppRoute("/")
assert route.resolve_path("/user/10/profile") == "/"
route = new AppRoute("/user")
assert route.resolve_path("/user/10/profile") == "/user"
# Replace path parameters with concrete values from the `uri`.
#
# For strict routes, it returns the path unchanged:
# ~~~
# var route = new AppRoute("/")
# assert route.resolve_path("/user/10/profile") == "/"
#
# route = new AppRoute("/user")
# assert route.resolve_path("/user/10/profile") == "/user"
# ~~~
fun resolve_path(uri: String): String do return path.simplify_path
lib/popcorn/pop_routes.nit:57,2--67,67
# For parameterized routes, parameter names are replaced by their value in the URI.
# ~~~
# var route = new AppParamRoute("/user/:id")
# assert route.resolve_path("/user/10/profile") == "/user/10"
#
# route = new AppParamRoute("/user/:userId/items/:itemId")
# assert route.resolve_path("/user/Morriar/items/i156/desc") == "/user/Morriar/items/i156"
# ~~~
redef fun resolve_path(uri) do
var uri_params = parse_uri_parameters(uri)
var path = "/"
for part in path_parts do
if part isa UriString then
path /= part.string
else if part isa UriParam then
path /= uri_params.get_or_default(part.name, part.name)
end
end
return path.simplify_path
end
lib/popcorn/pop_routes.nit:127,2--146,4
# Path without the trailing `*`.
# ~~~
# var route = new AppGlobRoute("/user/:id/*")
# assert route.resolve_path("/user/10/profile") == "/user/10"
#
# route = new AppGlobRoute("/user/:userId/items/:itemId*")
# assert route.resolve_path("/user/Morriar/items/i156/desc") == "/user/Morriar/items/i156"
# ~~~
redef fun resolve_path(uri) do
var path = super
if path.has_suffix("*") then
return path.substring(0, path.length - 1).simplify_path
end
return path.simplify_path
end
lib/popcorn/pop_routes.nit:209,2--223,4