wisp
 
(Arne Babenhauserheide)
2013-09-13: I’m finally able to treat initial comments directly.

I’m finally able to treat initial comments directly.

diff --git a/wisp-guile.w b/wisp-guile.w
--- a/wisp-guile.w
+++ b/wisp-guile.w
@@ -46,6 +46,7 @@ define : nostringandbracketbreaksreader 
 Ends with three consecutive linebreaks or eof."
     ; Replace end of line characters in brackets and strings
     ; FIXME: Breaks if the string is shorter than 2 chars
+    ; FIXME: Breaks if the text begins with a comment.
     let* 
 __      : lastchar : read-char inport
 ____      nextchar : read-char inport
@@ -60,9 +61,15 @@ Ends with three consecutive linebreaks o
                 or : eof-object? nextchar
                      and 
                          or (char=? nextchar #\linefeed ) (char=? nextchar #\newline ) 
-                         string-suffix? text "\n\n" ; text includes lastchar
+                         or (char=? lastchar #\linefeed ) (char=? lastchar #\newline ) 
+                         ; string-suffix? text "\n\n" ; text includes lastchar
             ; incommentfirstchar is only valid for exactly one char
             when incommentfirstchar : set! incommentfirstchar #f 
+            ; but add incommentfirstchar if we just started the text
+            when : equal? text ";" ; initial comment
+                 set! incommentfirstchar #f
+                 set! incomment #t
+                 set! text : string-append text "\\REALCOMMENTHERE"
             ; already started char forms win over everything, so process them first.
             ; already started means: after the #\
             ; FIXME: Fails to capture #t and #f which can kill line splitting if it happens inside brackets