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

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 2Python 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 Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page