(Arne Babenhauserheide)
2014-08-17: prepare the API for the wisp reader. prepare the API for the wisp reader. Still TODO: actually parse indentation.
diff --git a/wisp-scheme.w b/wisp-scheme.w --- a/wisp-scheme.w +++ b/wisp-scheme.w @@ -41,7 +41,7 @@ define : line-empty? line line-empty-code? line -define : wisp-scheme-read-chunk port +define : wisp-scheme-read-chunk-lines port let loop : indent-and-symbols : list ; '((5 "(foobar)" "\"yobble\"")(3 "#t")) inindent #t @@ -155,7 +155,11 @@ define : wisp-scheme-read-chunk port . currentindent append currentsymbols : list : read port . emptylines - + +define : wisp-scheme-read-chunk port + . "Read and parse one chunk of wisp-code" + let : : lines : wisp-scheme-read-chunk-lines port + . lines define : wisp-scheme-read-all port . "Read all chunks from the given port" @@ -168,12 +172,18 @@ define : wisp-scheme-read-all port append lines : wisp-scheme-read-chunk port define : wisp-scheme-read-file path - . #f + call-with-input-file path wisp-scheme-read-all + +define : wisp-scheme-read-string str + call-with-input-string str wisp-scheme-read-all + display - call-with-input-string " (foo) ; bar\n ; nop \n\n; nup\n; nup \n \n\n\n foo : moo \"\n\" \n___ . [goo . hoo]" wisp-scheme-read-chunk -newline -display : call-with-input-string " (foo) \n___. [goo . hoo]" wisp-scheme-read-chunk -newline + wisp-scheme-read-string " foo ; bar\n ; nop \n\n; nup\n; nup \n \n\n\n foo : moo \"\n\" \n___ . goo . hoo" +newline +; This correctly throws an error. +; display +; wisp-scheme-read-string " foo \n___. goo . hoo" +; newline