A markup language and color palette generators targeting the terminal.
Project description
Zenith
A markup language with a built-in color palette generator, made for the terminal.
pip install sh40-zenith
Purpose
Zenith
is a fast markup language meant to be readable and maximally accessible. Its
syntax is inspired by BBCode, but it's meant to
be readable enough that anyone can work with it with no background knowledge.
Feature highlights
Extensive color & styling support for the terminal
ZML (the Zenith Markup Language) has support for 16, 256 and true color palettes, and
supports both RGB triplets and HEX codes for the latter. A color can set the background
if prefixed by @
.
Zenith
is implemented using Slate's terminal APIs,
and as a result any color set in ZML will be backwards compatible for even the oldest
(xterm-based) terminals!
If you only set a background but no foreground, ZML will choose either black or white depending on which will be more readable, in accordance to the W3C color contrast guidelines.
from zenith import zprint
zprint("[bold 141]Purple & bold,[/] Reset, [@#212121 grey]code,[/bg] and now only grey.")
Hyperlink support
ZML has a simple syntax to define web-like hyperlinks, which are supported by your terminal! Simply use the tilde symbol followed by a URI:
from zenith import zprint
zprint("This looks & functions like a terminal hyperlink: [blue underline ~https://google.com]Google[/]")
Customizable macros & aliases
We also support macros, which are python functions you can call to transform your unstyled markup content while it's being parsed. Here is a simple localization system, implemented using just one macro:
from zenith import zml_macro, zprint
LANG = "en"
LOCALIZATION = {
"welcome": {
"en": "Welcome to the project",
"hu": "Üdv a projektben",
}
}
@zml_macro
def loc(key: str) -> str:
"""Returns a localized string for the given key."""
return LOCALIZATION[key]
zprint("This is localized: [!loc]welcome")
If you find yourself often reusing the same set of styles (even including macros), you can simply alias them:
from zenith import, zml_alias, zprint
zml_alias(title="!upper !gradient(72) bold")
zprint("[title]This is a cool title.[/title]")
Color palettes
Zenith
supercharges Slate
's 4-color palette generation by adding shades and
aliasing them for use in ZML.
from slate import Color
from zenith import Palette, zprint
palette = Palette(Color.from_hex("#4A7A9F"))
palette.alias()
zprint(palette.render())
Documentation
Once the library gets to a settled state (near 1.0), documentation will be hosted both online and as a celx
application. Until then peep the experiments
folder, or check out some of the references by using
python3 -m pydoc <name>
.
See also
This library is mostly supposed to power some higher level tools, so using it raw might not be ideal. Thankfully, we have two projects that can help with that:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sh40_zenith-0.5.0.tar.gz
.
File metadata
- Download URL: sh40_zenith-0.5.0.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.12.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.65.0 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2622773c861d23947c36a06c172acd403c78521ab47998073fc7c11eaf5a9478 |
|
MD5 | c9cc7d44578785e7408c38128cc3ca26 |
|
BLAKE2b-256 | 79ec10adede8398712ec1980284f5fd9528d1522a402e0378da8a93baaee60ca |
File details
Details for the file sh40_zenith-0.5.0-py3-none-any.whl
.
File metadata
- Download URL: sh40_zenith-0.5.0-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.12.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.65.0 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9924483c830b005e6cd5ffe47b4f9f40792f1137667dadc78a697e6b861d2626 |
|
MD5 | cc686663c4a08b00cb8be8c5d90e5956 |
|
BLAKE2b-256 | e92e42f80d6c689eb03caf0f8915fe79aea5ba3eaf3491ee0336686e0d2f363a |