Simple helper for build a url, and return anillo
    url spec hash map (dictionary)

    It can be used in this way:

    urls = [
        url("/<int:year>", index, methods=["get", "post"]),
        url("/<int:year>", index, methods=["get", "post"])
    ]

    This is a prefered way to define one url.

    :return: The anillo url spec
    :rtype: dict

def url(match, handler=None, methods=None, defaults=None,
        redirect_to=None, build_only=False, name=None, **kwargs):
    """Simple helper for build a url, and return anillo
    url spec hash map (dictionary)

    It can be used in this way:

    urls = [
        url("/<int:year>", index, methods=["get", "post"]),
        url("/<int:year>", index, methods=["get", "post"])
    ]

    This is a prefered way to define one url.

    :return: The anillo url spec
    :rtype: dict
    """
    assert isinstance(match, str), "match parameter should be string."
    assert handler or redirect_to, "you should specify handler or redirect_to for the url"

    if isinstance(methods, str):
        methods = [methods.upper()]
    elif isinstance(methods, (list, tuple)):
        methods = [x.upper() for x in methods]

    rule = {"match": match,
            "handler": handler,
            "methods": methods,
            "defaults": defaults,
            "redirect_to": redirect_to,
            "build_only": build_only,
            "name": name,
            "extra_data": kwargs}
    return rule