Metadata-Version: 2.1
Name: trimgmi
Version: 0.0.2
Summary: Opinionated parsing of gemtext.
Home-page: https://gitlab.com/lofidevops/trimgmi
Author: David Seaward
Author-email: david@librem.one
License: GPL-3.0-or-later
Platform: UNKNOWN
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Text Processing :: Markup
Description-Content-Type: text/markdown; charset=UTF-8

# 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):

* <gemini://gemini.circumlunar.space/docs/gemtext.gmi>

Read more about gemtext (proxy for web clients):

* <https://gemini.circumlunar.space/docs/gemtext.gmi>

# 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:

```bash
trimgi test_search
# example.gmi remains tidy
# example.txt remains untidy

convertgmi gmi README.gmi test_output/README.gmi  # identical
convertgmi md README.gmi test_output/README.md  # readable
convertgmi html README.gmi 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:

* [GPL-3.0-or-later.txt license text](./GPL-3.0-or-later.txt)
* [CODE_OF_CONDUCT.md (report via a private ticket)](./CODE_OF_CONDUCT.md)
* [CONTRIBUTING.DCO.txt origin text](CONTRIBUTING.DCO.txt)


