Skip to main content

A simple HTML5 generator based-on Python's OOP

Project description

HTML5 generator from your Python code

GitHub Release GitHub issue custom search in repo PyPI - Downloads

Features

  • 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 HTMLPage class.
  • Custom tag creation by inheriting Element class which declared at markupify.tags

Goals

  • Generate *.html files after creating html content.
  • Create an CSSPage class to create some css contents.
  • Generate *.css files.
  • Show tag structure like <body> -> <div> -> h1 -> "This is heading one!" or something.
  • Create a page object with specific head and body.

Installation

pip install markupify

Usage

from 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>

Customizing

Devs! Maybe I forgot to create some tags you need. Feel free to create them yourself by inheriting from the Element class.

For example, create a double tag:

from typing import Optional, Union
from markupify.tags import Element


class MyCustomTag(Element):
    def __init__(self, tag_content: Optional[Union[str, Element]], **props):
        """
        A tag class to represent <my_tag> tag.
        """
        super().__init__(tag_name="my_tag", tag_content=tag_content, **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" />

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

markupify-1.1.0.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

markupify-1.1.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file markupify-1.1.0.tar.gz.

File metadata

  • Download URL: markupify-1.1.0.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.1 CPython/3.9.18 Linux/6.5.0-1015-azure

File hashes

Hashes for markupify-1.1.0.tar.gz
Algorithm Hash digest
SHA256 4a19bf4a76b15970e751a216420689b3546643b199582297268e77d7c5814688
MD5 bc536687b5e4b7a39da89d9db2d44ecb
BLAKE2b-256 897ff71f508d658464a96309b5ad593344aad36fd62498b4a68a25db46a37377

See more details on using hashes here.

File details

Details for the file markupify-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: markupify-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.1 CPython/3.9.18 Linux/6.5.0-1015-azure

File hashes

Hashes for markupify-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5063e2b3195ded7d1e7029b7777c585f93dca500fbe7367ef28da27e6696e731
MD5 6982b6b235e8fd5e979fa66bfa9ca6a5
BLAKE2b-256 16f40b0d6f8a9dbb9fce700e25371277f1ba4bfa9d5b35e379961a4f6766b2ab

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page