Skip to main content

htexpr compiles an html string into a Python expression

Project description

htexpr: Templating for Dash

PyPI MIT License CircleCI Github CI Documentation Status Black

htexpr compiles an html-like template syntax into Python expressions, allowing embedded Python expressions in attributes and content. It is inspired by JSX and intended to complement the excellent Dash package, which allows you to write single-page React apps in Python. For motivation and further instructions, see the documentation.

Example

A Unicode table:

import dash
from dash import dcc, html, Input, Output, State

from htexpr import compile
import unicodedata

app = dash.Dash()
app.layout = compile("""
<div>
  <table style={"margin": "0 auto"}>
    <tr><th>char</th><th>name</th><th>category</th></tr>
       [
         (<tr style={'background-color': '#eee' if line % 2 else '#ccc'}>
            <td>{ char }</td>
            <td>{ unicodedata.name(char, '???') }</td>
            <td>{ unicodedata.category(char) }</td>
          </tr>)
         for line, char in enumerate(chr(i) for i in range(32, 128))
       ]
  </table>
</div>
""").run()

app.run_server(debug=True)

Further demonstrations:

Development status

I wrote this to help me with a particular project where I kept making bracketing mistakes. The code works for that project, but there are likely to be corner cases I haven't considered.

The Python grammar used here is quite simplistic: it recognizes strings and variously parenthesized expressions. By understanding more Python it would probably be possible to disambiguate between comparison operators and tags, and thus drop the requirement to enclose nested expressions in parentheses.

The error messages are not always helpful, and in particular the code objects don't yet have reliable line-number data.

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

htexpr-0.1.2.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

htexpr-0.1.2-py2.py3-none-any.whl (10.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file htexpr-0.1.2.tar.gz.

File metadata

  • Download URL: htexpr-0.1.2.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for htexpr-0.1.2.tar.gz
Algorithm Hash digest
SHA256 b5b0d9423ca30984639442c31fae14c699d13d7ee242cc79f82b0b02ea2d36b5
MD5 6e3a2a1dabc0fe8cda9e349edd7f2e96
BLAKE2b-256 7fb043ef436d234696b1f33f0c1d15826310535198e45e18b89577046f5c696d

See more details on using hashes here.

File details

Details for the file htexpr-0.1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: htexpr-0.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for htexpr-0.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 988c8fb5188cbcac47d1f5541786b31ec9252fdaae34bf6527162507cbc2cd59
MD5 d7130ea74f7bde08db4adb7d0b9b89d9
BLAKE2b-256 fc7422bfea0265d038053d5cc7929dacd772cb3c363c5f7a3e0d702304a7405b

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