Easy and quick html builder with natural syntax correspondence (python->html). No templates needed. Serves pure pythonic library with no dependencies.
Project description
Airium
Bidirectional HTML
-python
translator.
Key features:
- simple, straight-forward
- template-less (just the python, say goodbye to all the templates)
- DOM structure is strictly represented by python indentation (with context-managers)
- gives much cleaner html than regular templates
- equipped with reverse translator: html to python
Basic html page (hello world)
from airium import Airium
a = Airium()
a('<!DOCTYPE html>')
with a.html(lang="pl"):
with a.head():
a.meta(charset="utf-8")
a.title(_t="Airium example")
with a.body():
with a.h3(id="id23409231", klass='main_header'):
a("Hello World.")
html = str(a) # casting to string extracts the value
print(html)
Prints such a string:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8" />
<title>Airium example</title>
</head>
<body>
<h3 id="id23409231" class="main_header">
Hello World.
</h3>
</body>
</html>
Simple image in a div
from airium import Airium
a = Airium()
with a.div():
a.img(src='source.png', alt='alt text')
a('the text')
html_str = str(a)
print(html_str)
<div>
<img src="source.png" alt="alt text" />
the text
</div>
Table
from airium import Airium
a = Airium()
with a.table(id='table_372'):
with a.tr(klass='header_row'):
a.th(_t='no.')
a.th(_t='Firstname')
a.th(_t='Lastname')
with a.tr():
a.td(_t='1.')
a.td(id='jbl', _t='Jill')
a.td(_t='Smith') # can use _t or text
with a.tr():
a.td(_t='2.')
a.td(_t='Roland', id='rmd')
a.td(_t='Mendel')
table_str = str(a)
print(table_str)
<table id="table_372">
<tr class="header_row">
<th>no.</th>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>1.</td>
<td id="jbl">Jill</td>
<td>Smith</td>
</tr>
<tr>
<td>2.</td>
<td id="rmd">Roland</td>
<td>Mendel</td>
</tr>
</table>
Reverse translation
from airium import from_html_to_airium
html_str = """\
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8" />
<title>Airium example</title>
</head>
<body>
<h3 id="id23409231" class="main_header">
Hello World.
</h3>
</body>
</html>
"""
py_str = from_html_to_airium(html_str)
assert py_str == """\
#!/usr/bin/env python
# File generated by reverse AIRIUM translator (version 0.1.5).
# Any change will be overridden on next run.
# flake8: noqa E501 (line too long)
from airium import Airium
a = Airium()
a('<!DOCTYPE html>')
with a.html(lang='pl'):
with a.head():
a.meta(charset='utf-8')
a.title(_t='Airium example')
with a.body():
a.h3(klass='main_header', id='id23409231', _t='Hello World.')
"""
Installation
pip install airium
That will install the aurium
package and a console entry
point for reverse translation of HTML
files - named the same: arium
Using reverse translator as a binary:
Call in command line:
airium http://www.example.com
That will fetch the document and translate it to airium
(python) code.
To store it into a file:
airium http://www.example.com > /tmp/arium_example_com.py
You can also parse local html files:
airium /path/to/your_file.html > /tmp/arium_my_file.py
You may also try to parse your Django templates. I'm not sure if it works, but there will be probably not much to fix.
Enjoy!
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
airium-0.1.5.tar.gz
(10.1 kB
view hashes)
Built Distribution
airium-0.1.5-py3-none-any.whl
(17.6 kB
view hashes)