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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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