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