
class RouteResult:
    """
    An object to be returned from Page.route, which encapsulates
    all the information necessary to serve an HTTP response. Analogous to
    django.urls.resolvers.ResolverMatch, except that it identifies
    a Page instance that we will call serve(*args, **kwargs) on, rather
    than a view function.
    """
    def __init__(self, page, args=None, kwargs=None):
        self.page = page
        self.args = args or []
        self.kwargs = kwargs or {}

    def __getitem__(self, index):
        return (self.page, self.args, self.kwargs)[index]
