tagz is a html tags builder
Project description
tagz
tagz
– is an extremely simple library for building html documents without using templates,
just with python code.
from tagz import Page, StyleSheet, Style, html
page = Page(
lang="en",
body_element=html.body(
html.h1("Hello"),
html.div(
html.strong("world"),
),
html.a(
"example link",
html.i("with italic text"),
href="https://example.com/"
),
),
head_elements=(
html.meta(charset="utf-8"),
html.meta(name="viewport", content="width=device-width, initial-scale=1"),
html.title("tagz example page"),
html.link(href="/static/css/bootstrap.min.css", rel="stylesheet"),
html.script(src="/static/js/bootstrap.bundle.min.js"),
html.style(
StyleSheet({
"body": Style(padding="0", margin="0"),
".container, .container-fluid": Style(transition="opacity 600ms ease-in"),
})
)
),
)
# `pretty=False` should be faster but performs not a human-readable result
print(page.to_html5(pretty=True))
writes something like this:
/Users/mosquito/dev/python/tagz/.venv/bin/python /Users/mosquito/Library/Application Support/JetBrains/PyCharm2023.2/scratches/scratch_16.py
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>
tagz example page
</title>
<link href="/static/css/bootstrap.min.css" rel="stylesheet"/>
<script src="/static/js/bootstrap.bundle.min.js">
</script>
<style>
body {padding:"0";margin:"0"}
.container, .container-fluid {transition:"opacity 600ms ease-in"}
</style>
</head>
<body>
<h1>
Hello
</h1>
<div>
<strong>
world
</strong>
</div>
<a href="https://example.com/">
example link
<i>
with italic text
</i>
</a>
</body>
</html>
More examples
Building page from parts
You can reuse the code, and assemble the page piece by piece, to do this you can modify elements already added to the tags:
from tagz import html, Page
# Make an content element
content = html.div(id='content')
page = Page(
lang="en",
body_element=html.body(
html.h1("Example page"),
html.hr(),
# Adding it to the page
content,
),
head_elements=(
html.meta(charset="utf-8"),
html.title("tagz partial page"),
),
)
content.append("Example page content")
print(page.to_html5(pretty=True))
This prints something like this:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>
tagz example page
</title>
</head>
<body>
<h1>
Example page
</h1>
<hr/>
<div id="content">
Example page content
</div>
</body>
</html>
Convert CSV to html table
from io import StringIO
from urllib.request import urlopen
from csv import reader
from tagz import html, Page
url = (
'https://media.githubusercontent.com/media/datablist/'
'sample-csv-files/main/files/organizations/'
'organizations-10000.csv'
)
csv = reader(StringIO(urlopen(url).read().decode()))
table = html.table(border='1', style="border-collapse: collapse;")
content = list(csv)
# Make table header
table.append(html.tr(*map(html.th, content[0])))
# Add table rows
for csv_row in content[1:]:
table.append(html.tr(*map(html.td, csv_row)))
page = Page(
lang="en",
body_element=html.body(
html.h1("Converted CSV"),
table,
"Content of this page has been automatically converted from",
html.a(url, href=url),
),
head_elements=(
html.meta(charset="utf-8"),
html.title("tagz csv example page"),
),
)
with open("/tmp/csv.html", "w") as fp:
fp.write(page.to_html5())
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
tagz-0.2.0.tar.gz
(5.0 kB
view details)
Built Distribution
tagz-0.2.0-py3-none-any.whl
(5.1 kB
view details)
File details
Details for the file tagz-0.2.0.tar.gz
.
File metadata
- Download URL: tagz-0.2.0.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.10.2 Darwin/22.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c43d13c3b220e9bd40a55da2df8a9ebe4eecdf736c76abd475b0ace37cc89d9b |
|
MD5 | a780778d3b76897af2bd95d7f2e30973 |
|
BLAKE2b-256 | ec65e9904ac57d31f13c954acc3de2ad7c0e4d16d3c202613e144f033545799f |
File details
Details for the file tagz-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: tagz-0.2.0-py3-none-any.whl
- Upload date:
- Size: 5.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.10.2 Darwin/22.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ae0457e92fbb23b1a077ee1726ad7e8c4f880a9985ceeb60dcdc1d775084c52 |
|
MD5 | 7ea9e5103e0a6af8689047e76048511d |
|
BLAKE2b-256 | 508cde5a6457883c0b3401425aa68481159c9994b3eaa20c9f6631545eaeb2c4 |