/bs4tag

Yattag like html generator but with Beautifulsoup as base document

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

This library is based on the sources and definitions of yattag with the fondamental difference that BeautifulSoup is used as the html renderer.

Differences between bs4tag and yattag

* At this time, only SimpleDoc has been converted, Doc class is work in progress. *

  • The SimpleDoc/Doc object contains a BeautifulSoup intance in the soup attribute
  • asis() and ttls() functions added to SimpleDoc

( tutorial for both libraries: yattag.org and BS4)

Limitations

  • No support for custom indentation (indent)
  • stag_end option is not available

Basic example

Nested html tags, no need to close tags, same as yattag.

from bs4tag import Doc

doc, tag, text = Doc().tagtext()

with tag('html'):
    with tag('body', id = 'hello'):
        with tag('h1'):
            text('Hello world!')

print(doc.getvalue())

With BeautifulSoup added functionalities

Insert bs4tag document into a BeautifulSoup instance.

def body_text():
    doc, tag, text = SimpleDoc().tagtext()
    with tag('h1'):
        text('Hello world!')
    return doc.soup


doc, tag, text = SimpleDoc().tagtext()

with tag('html'):
    with tag('body', id='hello'):
        pass

doc.soup.find(id='hello').append(body_text())

print(doc.getvalue())
# <html><body id="hello"><h1>Hello world!</h1></body></html>

Installation

pip3 install bs4tag

This library is compatible with the tutorial on yattag.org

GitHub repo: https://github.com/ceprio/bs4tag Derived from: https://github.com/leforestier/yattag