Syntax highlighting for prompt_toolkit and HTML with pyparsing.
Project description
Syntax highlighting with pyparsing, supporting both HTML output and prompt_toolkit–style terminal output. The PPHighlighter class can also be used as a lexer for syntax highlighting as you type in prompt_toolkit. It is compatible with existing Pygments styles.
Read the documentation on readthedocs.
Requirements
Python 3.5+
prompt_toolkit 2.0+
Installation
pip3 install -U pyparsing-highlighting
Or, after cloning the repository on GitHub:
python3 setup.py install
Examples
The following code demonstrates the use of PPHighlighter:
from pp_highlighting import PPHighlighter
from prompt_toolkit.styles import Style
import pyparsing as pp
from pyparsing import pyparsing_common as ppc
def parser_factory(styler):
a = styler('class:int', ppc.integer)
return pp.delimitedList(a)
pph = PPHighlighter(parser_factory)
style = Style([('int', '#528f50')])
pph.print('1, 2, 3', style=style)
This prints out the following to the terminal:
The following code generates HTML:
pph.highlight_html('1, 2, 3')
The output is:
<span class="highlight"><span class="int">1</span>, <span class="int">2</span>, <span class="int">3</span></span>
There is also a lower-level API—pph.highlight('1, 2, 3')
returns the following:
FormattedText([('class:int', '1'), ('', ', '), ('class:int', '2'), ('', ', '), ('class:int', '3')])
A FormattedText instance can be passed to prompt_toolkit.print_formatted_text(), along with a Style mapping the class names to colors, for display on the terminal.
PPHighlighter can also be passed to a prompt_toolkit.PromptSession as the lexer argument, which will perform syntax highlighting as you type. For an example of this, see examples/calc.py and examples/repl.py.
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
Hashes for pyparsing-highlighting-0.2.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0969be12c6b138e00462f9c9e7920f0d1b5bcc61a06fe03255b846b84d55dc5 |
|
MD5 | 241b4a273d2899e1c2fea64ac1c4b7ec |
|
BLAKE2b-256 | 976174a6fe8339f9a475d67fac246ae63e233a2d8ee81b48e2cbbfe57028b769 |
Hashes for pyparsing_highlighting-0.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f9a8402e242d4a36e5a06b3fcdff1ea4dc1e0bbb2d13afa9e08b42f127cac92 |
|
MD5 | 9f0c0262947b206ec21632e5184835e8 |
|
BLAKE2b-256 | f4e4a077990bde0b6742f05c1969436f02e5dd95b99349df97111ca2b8ecd0c9 |