Skip to main content

A simple library for parsing the Gemtext markup language

Project description

gemtext - A simple library for parsing the Gemtext markup language

Introduction

gemtext is a small and simple library that provides code for parsing the hypertext markup language of the Gemini project.

Installation

gemtext is available from pypi and can be installed with your package installer of choice.

With pip:

pip install gemtext

With uv:

uv add gemtext

Quick start

The library provides a single main parsing class called Gemtext. It is initialised with a text of gemtext and the content property provides a list of lines, typed with their parsed type, each having its own relevant properties.

A very minimal parser might look like this:

import fileinput
from gemtext import Gemtext

def parse_input() -> None:
    for gem_line in Gemtext("".join(fileinput.input())).content:
        print(f"{gem_line!r}")

The library contains a simple test command line tool, which can be accessed either via the Python -m switch, or depending on your environment, via the gemtext command. For example, given this content of a file called example.gmi:

# This is a heading

## This is a sub-heading

### This is a sub-sub-heading

=> gemini://davep.gemcities.com/ Dave's test capsule

> This is a deep and meaningful quote

```
Here is some pre-formatted text.

Here's some more of that text.
```

* One
* Two
* Three

The gemtext command (or python -m gemtext) would produce:

$ gemtext example.gmi
Heading(content='This is a heading', level=1)
Paragraph(content='')
Heading(content='This is a sub-heading', level=2)
Paragraph(content='')
Heading(content='This is a sub-sub-heading', level=3)
Paragraph(content='')
Link(content="Dave's test capsule", uri='gemini://davep.gemcities.com/')
Paragraph(content='')
Quote(content='This is a deep and meaningful quote')
Paragraph(content='')
PreFormatted(content="Here is some pre-formatted text.\n\nHere's some more of that text.")
Paragraph(content='')
ListItem(content='One')
ListItem(content='Two')
ListItem(content='Three')

See the main documentation for the full API.

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

gemtext-0.1.0.tar.gz (4.1 kB view details)

Uploaded Source

Built Distribution

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

gemtext-0.1.0-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file gemtext-0.1.0.tar.gz.

File metadata

  • Download URL: gemtext-0.1.0.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for gemtext-0.1.0.tar.gz
Algorithm Hash digest
SHA256 763657c45e5fe5c681011bac248c7b502ed2d5b961c1ffb27547905b2fba8509
MD5 4cbdff123bff7de153b94fcb7bfb56a1
BLAKE2b-256 f4b654ce34d9cb2fdb1cd85e732e4a7f4564178fbd5299527e53ffdb19d119ef

See more details on using hashes here.

File details

Details for the file gemtext-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: gemtext-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for gemtext-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5d0965dad895216b4655a95b88e13fc672ee2a08497a3395348812ed26e4ae83
MD5 5a7a5f97a5de9218bbd342386c4ded4b
BLAKE2b-256 ade3ce14e923e5e181200738421df2fe84c0af04553aadc1332e0a37fdb729bc

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