Phos (short for phosphophyllite) is both a Gemini client library forCommon Lisp and an experiment at making a GUI in lisp.
Phos provides three packages:
phos/gemtext
which provides all the functionalities needed to parsetext/gemini (gemtext),phos/gemini
which provides functions to make Gemini requests andparse the response,phos/ui
which is an experiment at writing an UI, but it's notreally maintained.
All the lines types are instance of theelement
base class. Theparse
routine is the main function, it takes a stream and produces alist of lines.parse-string
is an helper which parses a string.
The generic functionunparse
turns an element, or a list of elements,into a text representation that is written in the given stream.
There are also various helpers, liketitle-p
,link-p
,line-eq
,etc...
The main function iswith-gemini-request
which exposes a stream withthe gemini content and can be used to handle replies by streaming. Thehelperrequest
instead loads all the reply in memory and returns it asa string if it was of atext/*
MIME type or binary otherwise.
ISC