1
0
Fork
You've already forked phos
0
Gemini client library and experimental GUI
  • Common Lisp 100%
Find a file
2025年10月07日 16:26:24 +00:00
t add a test for the new :join-lines option 2024年05月15日 22:10:28 +00:00
.gitignore ignore *.fasl files 2022年01月14日 16:57:34 +00:00
gemini.lisp gemini: Add with-gemini-request macro. 2022年01月17日 12:21:05 +01:00
gemtext.lisp gemtext: add :join-lines to parse-string too 2024年05月15日 22:10:14 +00:00
LICENSE double license as ISC and AGPL-3.0 2025年10月07日 16:26:24 +00:00
LICENSE-AGPL double license as ISC and AGPL-3.0 2025年10月07日 16:26:24 +00:00
LICENSE-ISC double license as ISC and AGPL-3.0 2025年10月07日 16:26:24 +00:00
package.lisp fmt 2022年01月17日 11:25:42 +00:00
phos.asd fix for asdf:test-system 2022年01月19日 13:46:06 +00:00
phos.lisp initial commit 2020年11月09日 16:33:53 +01:00
README.md double license as ISC and AGPL-3.0 2025年10月07日 16:26:24 +00:00
test.gmi add a blockquote line to the test file 2022年01月13日 23:01:41 +01:00
ui.lisp fix ui after api change 2022年01月17日 11:25:33 +00:00

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

This project is licensed under either the terms of the ISC or AGPL-3.0 licenses, at the user's discretion.

See LICENSE-ISC or LICENSE-AGPL to see the terms.