w6vvn
d788f6376e
next-cmd should only be called by get-document at the end of 20 status
2025-09-08 14:08:57 -07:00
w6vvn
7114336863
correctly convert url to string when raising unsupported scheme error
2025-09-08 13:43:34 -07:00
w6vvn
6529f4118c
fix bug related to line endings
2025-09-08 13:41:02 -07:00
w6vvn
0dc93d369e
prepare for use over the radio
2025-09-08 13:40:44 -07:00
w6vvn
4323f759fa
shebang
2025-09-08 13:39:37 -07:00
w6vvn
3240b30b6f
change default line length to 40 columns
2025-09-08 13:39:10 -07:00
w6vvn
bc5ddeb84c
the exceptions were raising exceptions...
2025-09-08 13:38:56 -07:00
w6vvn
b0af59a316
implement repl for new client structure
2025-09-07 19:11:17 -07:00
w6vvn
4ea51c0ed5
total overhaul of client implementation
2025-09-07 18:48:54 -07:00
w6vvn
e6d28d6798
rework of gmi:match-link procedure
2025-09-07 18:48:41 -07:00
w6vvn
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
w6vvn
b05dc90e70
rip a ton of stuff out. clear my head a bit.
2025-09-06 19:29:13 -07:00
w6vvn
759c66889c
implement "url" command
2025-09-06 17:51:14 -07:00
w6vvn
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
w6vvn
7e1e21439d
refuse to visit non-gemini urls
2025-09-06 17:17:02 -07:00
w6vvn
b4d226477e
subject link rendering to paragraph wrapping
2025-09-06 17:03:45 -07:00
w6vvn
75187116eb
include scheme in rendered links
2025-09-06 16:58:02 -07:00
w6vvn
dbe6bbf43b
add proper handling of exceptions raised by network procedures
2025-09-06 16:41:42 -07:00
w6vvn
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
w6vvn
e081ec9edf
implement an "up" command
2025-09-06 11:39:14 -07:00
w6vvn
fcb7346209
missed client.rkt in last few commits, oops.
2025-09-05 18:19:32 -07:00
w6vvn
522d253c2a
standardize on storing urls as url structs internally instead of as strings
2025-09-05 18:18:14 -07:00
w6vvn
bd3f048595
encapsulate client state in an object
2025-09-05 17:59:11 -07:00
w6vvn
6789074d4f
complete response handling
2025-09-05 17:24:02 -07:00
w6vvn
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
w6vvn
f5cfbe76ea
improve nomenclature of gmi handling module somewhat?
2025-09-05 14:12:06 -07:00
w6vvn
87e273fe00
handle relative links and unspecified schemes
2025-09-04 20:40:36 -07:00
w6vvn
f02b2c976e
correctly handle bottoming out document buffer
2025-09-04 19:39:01 -07:00
w6vvn
566d2ff40e
net/url includes http stuff. net/url-string is all we want or need
2025-09-04 18:04:13 -07:00
w6vvn
b02f59c17f
add a visit link command
2025-09-04 15:22:36 -07:00
w6vvn
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
w6vvn
ea9a3b8fb7
add abbreviations for existing commands
2025-09-04 15:13:25 -07:00
w6vvn
e3590502a9
defines a procedure used for looking up links by id in a document
2025-09-04 15:09:50 -07:00
w6vvn
724dc95086
start firmly defining module boundaries for gmi parser
2025-09-04 14:45:55 -07:00
w6vvn
c786466d65
totally redo the line interface, go and pagination commands
2025-09-03 21:16:32 -07:00
w6vvn
febdca7180
clean up formatting on gmi:render procedure and document
2025-09-03 20:15:21 -07:00
w6vvn
41e092975d
cutting pasting and renaming as we start to define architectural boundaries
2025-09-03 20:13:07 -07:00
w6vvn
c80d07befb
implement a procedure to visit documents. NOT compliant, but enough to move on.
2025-09-02 19:01:53 -07:00
w6vvn
a78e3c8b09
add special case for empty paragraphs
2025-09-02 18:25:17 -07:00
w6vvn
dc2d9ed906
assign numbers to links in a document
2025-09-02 17:17:07 -07:00
w6vvn
6070cd33aa
primitive gemtext rendering. not helpful for links yet, but permits further progress on development
2025-09-02 08:21:58 -07:00
w6vvn
01e79027b8
correct logical error in gemtext parsing
2025-09-02 08:21:38 -07:00
w6vvn
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
w6vvn
75d833949c
correct a logical error that would lead to merging unrelated preformatted blocks
2025-09-01 20:34:59 -07:00
w6vvn
1fab00d3a2
implement primitive and bare minimum gemtext parsing
2025-09-01 20:07:44 -07:00
w6vvn
5bffb92241
two minor changes to make prototyping in the racket REPL nicer
2025-09-01 20:06:45 -07:00
w6vvn
37871b6b3b
implement a procedure for reflowing and displaying paragraphs
2025-09-01 18:57:01 -07:00
w6vvn
e0260e4496
implement very primitive REPL
2025-09-01 16:43:35 -07:00
w6vvn
836477902c
correct a minor issue with header parsing
2025-09-01 16:43:05 -07:00
w6vvn
71c840d687
initial commit. tentatively implements response header parsing.
2025-09-01 14:50:34 -07:00