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))
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")()))
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))
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>'
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"), ), ), )
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"), ), ), ))
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))
def test_comment(): assert render(comment("abc")) == "<!-- abc -->"
def test_doctype(): assert render(doctype("html", "a b c")) == '<!DOCTYPE html "a b c">'
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
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()
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" />'
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))