Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/omar-polo/phos
Gemini client library and experimental GUI
https://github.com/omar-polo/phos
common-lisp gemini
Last synced: 30 days ago
JSON representation
Gemini client library and experimental GUI
- Host: GitHub
- URL: https://github.com/omar-polo/phos
- Owner: omar-polo
- License: isc
- Created: 2020-11-09T15:26:51.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-05-28T07:40:34.000Z (8 months ago)
- Last Synced: 2024-11-07T11:14:18.848Z (3 months ago)
- Topics: common-lisp, gemini
- Language: Common Lisp
- Homepage:
- Size: 41 KB
- Stars: 5
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-gemini - phos - Gemini client library and experimental GUI (Programming / Graphical)
README
# phos
Phos (short for phosphophyllite) is both a Gemini client library for
Common Lisp and an experiment at making a GUI in lisp.Phos provides three packages:
- `phos/gemtext` which provides all the functionalities needed to parse
text/gemini (gemtext),
- `phos/gemini` which provides functions to make Gemini requests and
parse the response,
- `phos/ui` which is an experiment at writing an UI, but it's not
really maintained.### phos/gemtext
All the lines types are instance of the `element` base class. The
`parse` routine is the main function, it takes a stream and produces a
list of lines. `parse-string` is an helper which parses a string.The generic function `unparse` turns an element, or a list of elements,
into a text representation that is written in the given stream.There are also various helpers, like `title-p`, `link-p`, `line-eq`,
etc...### phos/gemini
The main function is `with-gemini-request` which exposes a stream with
the gemini content and can be used to handle replies by streaming. The
helper `request` instead loads all the reply in memory and returns it as
a string if it was of a `text/*` MIME type or binary otherwise.## License
ISC