A minimal python dsl for generating html.
Project description
hype
A minimal python dsl for generating html.
Install
Install via pip
pip install hype-html
Alteratively, in the spirit of removing dependencies, you could simply copy/paste the hype/element.py file into your project.
Usage
Hype exposes classes for each html tag.
from hype import *
doc = Doc(Html('Hello World!'))
print(doc)
# <!DOCTYPE html>
# <div>Hello World!</div>
Elements can also be rendered by calling.
doc() == str(doc)
Inner HTML
Arguments passed in the element constructor are rendered using the str function and indented (if the element only has one argument it will not be indented.)
body = Body(
H1('Hello World'),
P('This is a paragraph'),
'Just a string',
P('Another paragraph')
)
print(body)
# <body>
# <h1>Hello World</h1>
# <p>This is a paragraph</p>Just a string
# <p>Another paragraph</p>
# </body>
Append to an elementes list of inner html elements.
body = Body(
H1('Hello World'),
P('This is a paragraph'),
'Just a string'
)
body.append(P('Another paragraph'))
print(body)
# <body>
# <h1>Hello World</h1>
# <p>This is a paragraph</p>Just a string
# <p>Another paragraph</p>
# </body>
Attributes
Attributes are passed as keyword arguments to the element's constructor.
span = Span('span', width='50px')
print(span)
# <span width="50px">span</span>
Since some built-in, and possibly custom, attributes conflict with python keywords, keywords will automatically have all leading underscores stripped.
span = Span('span', _id='my-span', width='50px')
print(span)
# <span id="my-span" width="50px">span</span>
Any remaining underscores will be converted to hyphens.
span = Span('span', custom_attrbiute='custom')
print(span)
# <span custom-attribute="custom">span</span>
Also add attributes using a method's attrs method add keyword arguments.
span = Span('span')
span.attrs(_id='my-span', test='test')
print(span)
# <span id="my-span" test="test">span</span>
Custom Elements
If you to create a custom tag, just subtype the Element class and add a tag.
class CustomTag(Element):
tag = 'custom-tag'
tag = CustomTag()
print(tag)
# <custom-tag></custom-tag>
To create a custom self closing tag, subtype the SelfClosingElement class.
class CustomTag(SelfClosingElement):
tag = 'custom-tag'
tag = CustomTag()
print(tag)
# <custom-tag/>
Indents
The indent to be used can be passed as a keyword arg to the Doc constructor.
doc = Doc(content, indent=Indent.TAB)
It can also be passed as a keyword arg when calling and element.
div = Div(H1('Header'))
print(div(indent=Indent.FOUR_SPACES))
# <div>
# <h1>Header</h1>
# </div>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for hype_html-1.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f6e6d974eb03bbd108cf0b7ac66cb49b6ac8d36ff959a54cfcf92cdea13f46f |
|
MD5 | 474439ca94e1854ce1383dd4800375a7 |
|
BLAKE2b-256 | 9ae832e474149106ed899e5f48cca552d13d42f450f59cc8ddb1fb6cbbaa171a |