Opinionated parsing of gemtext.
Project description
trimgmi
Opinionated parsing of gemtext.
Usage
See "convert", "command" and "sample" modules for examples.
FIXME: Document this in more detail.
Description
Gemtext (GMI) is a lightweight, line-oriented markup language designed for the Gemini internet protocol. This module parses gemtext, ignoring extraneous whitespace. Text after closing ``` marks is also ignored.
The resulting objects can be rendered line-by-line without further parsing logic.
Also included are:
- round-trip render back to GMI with minimal whitespace
- simple render to CommonMark
- opinionated render to HTML
- primitive command line tools for the above
Read more about gemtext (requires Gemini client):
Read more about gemtext (proxy for web clients):
Implementation
This module has no external dependencies.
This implementation is deliberately verbose so that a developer can confirm by reading that the parser follows the gemtext specification. Optimising the core module is out-of-scope.
Testing
The following commands should run without changing the target files:
trimgi test_search
# example.gmi remains tidy
# example.txt remains untidy
# *.license remain unchanged
convertgmi gmi README test_output/README.gmi # identical
convertgmi md README test_output/README.md # readable
convertgmi html README test_output/README.html # readable
FIXME: Implement and document a comprehensive round-trip test harness.
Build
python setup.py sdist bdist_wheel
If everything works as expected you should end up with the files:
dist/trimgmi-<version>-py3-none-any.whl
dist/trimgmi-<version>.tar.gz
You can now optionally upload to PyPI:
twine upload dist/*
Sharing and contributions
trimgmi
https://gitlab.com/lofidevops/trimgmi
Copyright 2022 David Seaward and contributors
SPDX-License-Identifier: GPL-3.0-or-later
Shared under GPL-3.0-or-later. We adhere to the Contributor Covenant 2.0 without modification, and certify origin per DCO 1.1 with a signed-off-by line (git -s). Contributions under the same terms are welcome.
For details see the LICENSES folder, CODE_OF_CONDUCT.md (report via private ticket) and CONTRIBUTING.DCO.txt.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.