- Common Lisp 100%
| t | add a test for the new :join-lines option | |
| .gitignore | ignore *.fasl files | |
| gemini.lisp | gemini: Add with-gemini-request macro. | |
| gemtext.lisp | gemtext: add :join-lines to parse-string too | |
| LICENSE | double license as ISC and AGPL-3.0 | |
| LICENSE-AGPL | double license as ISC and AGPL-3.0 | |
| LICENSE-ISC | double license as ISC and AGPL-3.0 | |
| package.lisp | fmt | |
| phos.asd | fix for asdf:test-system | |
| phos.lisp | initial commit | |
| README.md | double license as ISC and AGPL-3.0 | |
| test.gmi | add a blockquote line to the test file | |
| ui.lisp | fix ui after api change | |
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/gemtextwhich provides all the functionalities needed to parse text/gemini (gemtext),phos/geminiwhich provides functions to make Gemini requests and parse the response,phos/uiwhich 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.