- HTML5 tag creation with classes such as
A()for<a></a>,Hr()for<hr />, etc. - Pretty printing the html content with
pretty()method. - Create multiple html pages using
HTMLPageclass. - Create a
HTMLPageobject with specific head and body. - Custom tag creation by inheriting
Elementclass which declared atmarkupify.tags - Generate
*.htmlfiles after creating html content withwrite()method.
- Create an
CSSPageclass to create some css contents. - Generate
*.cssfiles. - Show tag structure like
<body> -> <div> -> h1 -> "This is heading one!"or something. - Build html page with several parts.
pip install markupifyfrom markupify.page import HTMLPage
from markupify.tags import Meta, Link, Title, Div, H, Comment
# Alternatively, you can import these classes from markupify directly:
# from markupify import HTMLPage, Meta, Link, Title, Div, H, Comment
page = HTMLPage()
meta = Meta(charset="UTF-8")
link = Link(href="css/styles.css", rel="stylesheet")
title = Title("My first website")
div = Div(
tag_content=H(
tag_content="Greetings text"
)
)
comment = Comment("This is a comment")
page.add_tag_to_head(meta, link, title)
page.add_tag_to_body(comment, div)
print(page)Output:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><link href="css/styles.css" rel="stylesheet" /><title>My first website</title></head><body><!-- This is a comment --><div><h1>Greetings text</h1></div></body></html>To prettify that, use the pretty() method of the page object:
print(page.pretty())Output:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<link href="css/styles.css" rel="stylesheet"/>
<title>
My first website
</title>
</head>
<body>
<!-- This is a comment -->
<div>
<h1>
Greetings text
</h1>
</div>
</body>
</html>Also, you can create the page object with default head and body:
page = HTMLPage(
head=Head(meta, link, title),
body=Body(comment, div)
)If you want to get your html content as *.html file, you can use write() method:
page.write("index.html")Devs! Maybe I forgot to create some tags you need. Feel free to create them yourself by inheriting from the
Elementclass.
For example, create a double tag:
from typing import Optional, Union, Iterable
from markupify.tags import Element
class MyCustomTag(Element):
def __init__(self, *tags: Union[Iterable[str], Iterable[Element]], **props):
"""
A tag class to represent <my_tag> tag.
"""
super().__init__(tag_name="my_tag", *tags, **props)
my_tag = MyCustomTag("This my custom tag! 🥳")
print(my_tag)Output:
<my_tag>This my custom tag! 🥳</my_tag>Add class property with add_properties
my_tag.add_properties(_class="custom my-tag")
print(my_tag)Output:
<my_tag class="custom my-tag">This my custom tag! 🥳</my_tag>Note
Some keywords like class are built-in names in Python. So you need to use them with underscore before them.
For example, instead of class, write _class and everything will be fine.
Create a single tag:
from markupify.tags import Element
class Vl(Element):
def __init__(self, **props):
"""
A tag class to represent <vl> (Vertical Line) tag.
"""
super().__init__(tag_name="vl", has_end_tag=False, **props)
vl = Vl()
print(vl)Output:
<vl />Add width property with add_property
vl.add_property("width", "5px")
print(vl)Output:
<vl width="5px" />