44 Commits

Author SHA1 Message Date
b0af59a316 implement repl for new client structure 2025-09-07 19:11:17 -07:00
4ea51c0ed5 total overhaul of client implementation 2025-09-07 18:48:54 -07:00
e6d28d6798 rework of gmi:match-link procedure 2025-09-07 18:48:41 -07:00
91c04ac3c6 adjust gmi parsing to work on a port. it doesn't actually do this internally, yet, but it will soon. 2025-09-06 20:52:06 -07:00
b05dc90e70 rip a ton of stuff out. clear my head a bit. 2025-09-06 19:29:13 -07:00
759c66889c implement "url" command 2025-09-06 17:51:14 -07:00
f5d70e7488 set the scene for mime handling. however, some changes to how internal state is handled will need to be made before adding plaintext rendering. 2025-09-06 17:46:43 -07:00
7e1e21439d refuse to visit non-gemini urls 2025-09-06 17:17:02 -07:00
b4d226477e subject link rendering to paragraph wrapping 2025-09-06 17:03:45 -07:00
75187116eb include scheme in rendered links 2025-09-06 16:58:02 -07:00
dbe6bbf43b add proper handling of exceptions raised by network procedures 2025-09-06 16:41:42 -07:00
dbaa44190f implement some guards on the client. definitely need to relearn how to do syntax macros now... 2025-09-06 12:29:36 -07:00
e081ec9edf implement an "up" command 2025-09-06 11:39:14 -07:00
fcb7346209 missed client.rkt in last few commits, oops. 2025-09-05 18:19:32 -07:00
522d253c2a standardize on storing urls as url structs internally instead of as strings 2025-09-05 18:18:14 -07:00
bd3f048595 encapsulate client state in an object 2025-09-05 17:59:11 -07:00
6789074d4f complete response handling 2025-09-05 17:24:02 -07:00
37e19cb279 relocate "get" logic. see message
this stumped me for quite a minute. this procedure sometimes needs to
halt execution to get input, like a server requesting input, or the
client asking for permission to follow cross site redirects. the
problem is if the get procedure is thought of as being part of the net
interface, and compartmentalized from the program loop, actually doing
that would require heavy use of continuations to go back and forth
across the boundary

i -do- think that the way i ultimately want to go in the end is using
continuations to halt execution, catch it in the user interface to get
input, and then continue. however, its a lot simpler and more
immediate to change where i'm drawing the line in the separation of
concerns. the continuations-based approach is enough of a diversion
that i haven't managed to get anything done for the last couple of hours.
2025-09-05 15:11:28 -07:00
f5cfbe76ea improve nomenclature of gmi handling module somewhat? 2025-09-05 14:12:06 -07:00
87e273fe00 handle relative links and unspecified schemes 2025-09-04 20:40:36 -07:00
f02b2c976e correctly handle bottoming out document buffer 2025-09-04 19:39:01 -07:00
566d2ff40e net/url includes http stuff. net/url-string is all we want or need 2025-09-04 18:04:13 -07:00
b02f59c17f add a visit link command 2025-09-04 15:22:36 -07:00
38a420d649 add currently visited document, pre-rendering, to global state
its becoming apparent that this doesn't need to be global state, and
can be passed from iteration to iteration in the program loop. this
shall be revisited
2025-09-04 15:21:31 -07:00
ea9a3b8fb7 add abbreviations for existing commands 2025-09-04 15:13:25 -07:00
e3590502a9 defines a procedure used for looking up links by id in a document 2025-09-04 15:09:50 -07:00
724dc95086 start firmly defining module boundaries for gmi parser 2025-09-04 14:45:55 -07:00
c786466d65 totally redo the line interface, go and pagination commands 2025-09-03 21:16:32 -07:00
febdca7180 clean up formatting on gmi:render procedure and document 2025-09-03 20:15:21 -07:00
41e092975d cutting pasting and renaming as we start to define architectural boundaries 2025-09-03 20:13:07 -07:00
c80d07befb implement a procedure to visit documents. NOT compliant, but enough to move on. 2025-09-02 19:01:53 -07:00
a78e3c8b09 add special case for empty paragraphs 2025-09-02 18:25:17 -07:00
dc2d9ed906 assign numbers to links in a document 2025-09-02 17:17:07 -07:00
6070cd33aa primitive gemtext rendering. not helpful for links yet, but permits further progress on development 2025-09-02 08:21:58 -07:00
01e79027b8 correct logical error in gemtext parsing 2025-09-02 08:21:38 -07:00
4a08e57d3f reverse document and preformatted structures at end of parsing of each so that the document structure is in logical order 2025-09-01 20:41:22 -07:00
75d833949c correct a logical error that would lead to merging unrelated preformatted blocks 2025-09-01 20:34:59 -07:00
1fab00d3a2 implement primitive and bare minimum gemtext parsing 2025-09-01 20:07:44 -07:00
5bffb92241 two minor changes to make prototyping in the racket REPL nicer 2025-09-01 20:06:45 -07:00
37871b6b3b implement a procedure for reflowing and displaying paragraphs 2025-09-01 18:57:01 -07:00
e0260e4496 implement very primitive REPL 2025-09-01 16:43:35 -07:00
836477902c correct a minor issue with header parsing 2025-09-01 16:43:05 -07:00
71c840d687 initial commit. tentatively implements response header parsing. 2025-09-01 14:50:34 -07:00
0f24c2d0e8 add README 2025-09-01 14:50:01 -07:00