diff options
Diffstat (limited to 'gemini-to-web/README.md')
| -rw-r--r-- | gemini-to-web/README.md | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gemini-to-web/README.md b/gemini-to-web/README.md index ad9476c..586a33d 100644 --- a/gemini-to-web/README.md +++ b/gemini-to-web/README.md @@ -53,3 +53,35 @@ You can use `coppewebite-indexer` to create a gemlog index automatically. `coppewebite-to-rss` reads from standard input a gemtext file and produces the equivalent RSS to the gemtext subscription. Refer to the [`example`](example) directory for an example. + +## Writing gemtext manipulations + +You can also use the parser to build tools that manipulate gemtext. +For example: + +```python +# /// script +# dependencies = [ +# "gemini_to_web @ git+https://ñix.es/cgit/alex/coppewebite.git/#subdirectory=gemini-to-web", +# ] +# /// +import pathlib + +from gemini_to_web import parser + + +for gmi in pathlib.Path("source").glob("**/*.gmi"): + parsed = parser.parse(gmi.read_text()) + parsed = list(parsed) + for i, line in enumerate(parsed): + match line: + case parser.LinkLine(url, link_name): + if url.startswith("/") and url.endswith(".gmi"): + parsed[i] = parser.LinkLine(url.removesuffix(".gmi"), link_name) + case _: + pass + gmi.write_text("\n".join(map(str, parsed))) +``` + +This script removes `.gmi` from link URLs in `source/**/*.gmi`. +This script uses script dependencies that [`uv run` can use](https://docs.astral.sh/uv/guides/scripts/#creating-a-python-script). |
