Exemplo n.º 1
0
def render_page(page):
    """Render a page."""

    common_values = loadvalues(f"{SRC_DIR}/values")
    page_values = loadvalues(
        f"{SRC_DIR}/pages/{page}", extension_renderers=EXTENSION_RENDERERS
    )
    return render(document(p=page_values, c=common_values))
Exemplo n.º 2
0
def test_leaf_tag():
    with pytest.raises(ValueError):
        render(leaf_tag("a")(leaf_tag("b")))
    with pytest.raises(ValueError):
        render(composite_tag("a")(composite_tag("b")))

    with pytest.raises(ValueError):
        render(leaf_tag("a")(leaf_tag("b")()))
    with pytest.raises(ValueError):
        render(composite_tag("a")(composite_tag("b")()))
Exemplo n.º 3
0
    def __call__(self, value, system):
        try:
            data = dict(system, **value)
        except (TypeError, ValueError) as e:
            raise ValueError(
                "renderer was passed non-dictionary as value: {e}")

        template = self.template_loader()
        return render(template(data))
Exemplo n.º 4
0
def test_composite_tag():
    assert render(composite_tag("p")()()) == "<p></p>"
    assert render(p()(txt("x"))) == "<p>x</p>"
    assert render(p(class_="y")(txt("x"))) == '<p class="y">x</p>'
    assert render(p("a")(txt("x"))) == "<p a>x</p>"
    assert render(p("a", b="c")(txt("x"))) == '<p a b="c">x</p>'
    assert render(p(b="c")(txt("x"))) == '<p b="c">x</p>'
    assert render(p(b="c")(p()(txt("x")))) == '<p b="c"><p>x</p></p>'
Exemplo n.º 5
0
def home():
    """Index page - without renderer"""
    return render(
        doctype("html"),
        e.html()(
            e.head()(e.title()("htmldoom rendering framework demo")),
            e.body()(
                e.h1()("Home page"),
                e.a(href="/jinja2")("Jinja2"),
                e.br(),
                e.a(href="/htmldoom")("htmldoom"),
            ),
        ),
    )
Exemplo n.º 6
0
def home(request):
    """Index page - without renderer"""
    return Response(
        render(
            doctype("html"),
            e.html()(
                e.head()(e.title()("Pyramid template engine demo")),
                e.body()(
                    e.h1()("Home page"),
                    e.a(href="/jinja2")("Jinja2"),
                    e.br(),
                    e.a(href="/htmldoom")("htmldoom"),
                ),
            ),
        ))
Exemplo n.º 7
0
                description="htmldoom integration for Flask",
            ),
            plugin(
                title="pyramid_htmldoom",
                href="https://github.com/sayanarijit/pyramid_htmldoom",
                description="htmldoom rendering library plugin for Pyramid",
            ),
        ),
    ),
    e.p()(
        e.h2()("Contributing"),
        e.p()(
            "Check out the ",
            e.
            a(href=
              "https://github.com/sayanarijit/htmldoom/tree/master/CONTRIBUTING.md"
              )(" contributing guidelines."),
        ),
    ),
    e.p()(
        e.i()("NOTE: This file was generated using "),
        e.
        a(href=
          "https://github.com/sayanarijit/htmldoom/blob/master/examples/readme.py"
          )(e.i()("this script.")),
    ),
)

if __name__ == "__main__":
    print(render(*readme))
Exemplo n.º 8
0
def test_comment():
    assert render(comment("abc")) == "<!-- abc -->"
Exemplo n.º 9
0
def test_doctype():
    assert render(doctype("html", "a b c")) == '<!DOCTYPE html "a b c">'
Exemplo n.º 10
0
def test_components_leaf_tag_with_multiple_tags():
    my_tag = render(ly(YAML_COMPONENTS, "composite_tag.with_multiple_tags"))
    your_tag = render(
        composite_tag("sometag")()("1"), "\n",
        composite_tag("sometag")()("2"))
    assert my_tag == your_tag
Exemplo n.º 11
0
def parse(data):
    """Parses given data data into HTML elements.

    Arguments:
        data union(str, bytes, dict, list):
            Data to parse.

    Examples:
        >>> from htmldoom.yaml_loader import parse
        >>> 
        >>> parse({
        ...     "div": [
        ...         {"class": "row"},
        ...         [
        ...             "This is an element.",
        ...             " ",
        ...             {"i": [["*"]]},
        ...         ],
        ...     ]
        ... })
        b'<div class="row">This is an element. <i>*</i></div>'
    """

    if isinstance(data, dict):

        if len(data) != 1:
            raise ValueError(
                "\n{invalid}^^^ Invalid format. Valid format is:\n{valid}".
                format(invalid=dump(data, indent=2), valid=VALID_FORMAT))

        tagname, values = list(data.items())[0]
        attributes, inner = None, None

        if isinstance(values, list) and len(values) == 1:
            val = values[0]

            if isinstance(val, dict):
                attributes = val
            elif isinstance(val, list):
                inner = parse(val)
            else:
                raise ValueError(
                    "\n{invalid}^^^ Invalid format. Valid format is:\n{valid}".
                    format(invalid=dump(data, indent=2), valid=VALID_FORMAT))

        elif (isinstance(values, list) and len(values) == 2
              and isinstance(values[0], dict) and isinstance(values[1], list)):
            attributes, inner = values
            if inner is not None:
                inner = parse(inner)

        else:
            raise ValueError(
                "\n{invalid}^^^ Invalid format. Valid format is:\n{valid}".
                format(invalid=dump(data, indent=2), valid=VALID_FORMAT))

        return _to_element(tagname, attributes, inner)

    if isinstance(data, list):
        return render(*[parse(x) for x in data if x is not None]).encode()

    return render(data).encode()
Exemplo n.º 12
0
def test_leaf_tag():
    assert render(leaf_tag("input")()) == "<input />"
    assert render(input_()) == "<input />"
    assert render(input_("a")) == "<input a />"
    assert render(input_("a", b="c")) == '<input a b="c" />'
    assert render(input_(b="c")) == '<input b="c" />'
Exemplo n.º 13
0
def render_template(template_name, **context):
    ctx = _app_ctx_stack.top
    ctx.app.update_template_context(context)
    return render(_render(f"{template_name}.render", context, ctx.app))