Extract parameter values from uri.

var route = new AppParamRoute("/user/:userId/items/:itemId")
var params = route.parse_uri_parameters("/user/10/items/i125/desc")
assert params["userId"] == "10"
assert params["itemId"] == "i125"
assert params.length == 2

params = route.parse_uri_parameters("/")
assert params.is_empty

Property definitions

popcorn $ AppParamRoute :: parse_uri_parameters
	# Extract parameter values from `uri`.
	# ~~~
	# var route = new AppParamRoute("/user/:userId/items/:itemId")
	# var params = route.parse_uri_parameters("/user/10/items/i125/desc")
	# assert params["userId"] == "10"
	# assert params["itemId"] == "i125"
	# assert params.length == 2
	#
	# params = route.parse_uri_parameters("/")
	# assert params.is_empty
	# ~~~
	fun parse_uri_parameters(uri: String): Map[String, String] do
		var res = new HashMap[String, String]
		if path_parts.is_empty then return res
		var parts = uri.split("/")
		for i in [0 .. path_parts.length[ do
			if i >= parts.length then return res
			var ppart = path_parts[i]
			var part = parts[i]
			if not ppart.match(part) then return res
			if ppart isa UriParam then
				res[ppart.name] = part
			end
		end
		return res
	end
lib/popcorn/pop_routes.nit:148,2--173,4