wisp
 
(Arne Babenhauserheide)
2013-08-11: try to split out the leading indentation splitting. did not work.

try to split out the leading indentation splitting. did not work.

diff --git a/wisp-guile.w b/wisp-guile.w
--- a/wisp-guile.w
+++ b/wisp-guile.w
@@ -122,69 +122,81 @@ define : splitlines inport
             set! nextchar : read-char inport
         . lines
 
+; skip the leading indentation
+define : skipindent inport
+    let skipper
+        : inunderbars #t
+          indent 0
+          nextchar : read-char inport
+        display : string nextchar
+        ; when the file ends, do not do anything else
+        when : not : eof-object? nextchar 
+            ; skip underbars
+            if inunderbars
+                skipper 
+                    char=? nextchar #\_ ; still in underbars?
+                    + indent 1
+                    read-char inport
+                ; else: skip remaining spaces
+                when : char=? nextchar #\space
+                    skipper
+                        . #f
+                        + indent 1
+                        read-char inport
+            unread-char nextchar
+        . indent
+
 ; Now we have to split a single line into indentation, content and comment.
 define : splitindent inport
-    let
-        : nextchar : read-char inport
-          inindentunderbar #t
-          inindent #t ; it always begins in indent
-          incomment #f ; but not in a comment
-          commentstart #f
-          commentstartidentifier "\\REALCOMMENTHERE"
-          commentstartidentifierlength 16
-          commentidentifierindex 0
-          indent 0
-          content ""
-          comment ""
-        while : not : eof-object? nextchar
-            ; check wether we leave the initial underbars
-            when : and inindentunderbar : not : char=? nextchar #\_
-                set! inindentunderbar #f
-                set! indent : + indent 1
+    let 
+        : indent : skipindent inport
+        let
+            : nextchar : read-char inport
+              inindent #t ; it always begins in indent
+              incomment #f ; but not in a comment
+              commentstart #f
+              commentstartidentifier "\\REALCOMMENTHERE"
+              commentstartidentifierlength 16
+              commentidentifierindex 0
+              content ""
+              comment ""
+            while : not : eof-object? nextchar
+                ; check whether we leave the content
+                when : and ( not incomment ) : char=? nextchar #\;
+                    set! commentstart #t
+                    set! comment : string-append comment : string nextchar
+                    set! nextchar : read-char inport
+                    continue
+                ; check whether we stay in the commentcheck
+                when : and commentstart : char=? nextchar : string-ref commentstartidentifier commentidentifierindex
+                    set! commentidentifierindex : + commentidentifierindex 1
+                    set! comment : string-append comment : string nextchar
+                    when : = commentidentifierindex : - commentstartidentifierlength 1
+                        set! commentstart #f
+                        set! incomment #t
+                        ; reset used variables
+                        set! commentidentifierindex 0
+                        set! comment ""
+                    set! nextchar : read-char inport
+                    continue
+                ; if we cannot complete the commentcheck, we did not start a real comment. Append it to the content
+                when : and commentstart : not : char=? nextchar : string-ref commentstartidentifier commentidentifierindex
+                    set! commentstart #f
+                    set! content : string-append content comment
+                    set! comment ""
+                    set! commentidentifierindex 0
+                    set! nextchar : read-char inport
+                    continue
+                ; if we are in the comment, just append to the comment
+                when incomment
+                    set! comment : string-append comment : string nextchar
+                    set! nextchar : read-char inport
+                    continue
+                ; if nothing else is true, we are in the content
+                set! content : string-append content : string nextchar
                 set! nextchar : read-char inport
-                continue
-            ; check whether we leave the indentation
-            when : and inindent : not : char=? nextchar #\space
-                set! inindent #f
-                set! indent : + indent 1
-                set! nextchar : read-char inport
-                continue
-            ; check whether we leave the content
-            when : and ( not incomment ) : char=? nextchar #\;
-                set! commentstart #t
-                set! comment : string-append comment : string nextchar
-                set! nextchar : read-char inport
-                continue
-            ; check whether we stay in the commentcheck
-            when : and commentstart : char=? nextchar : string-ref commentstartidentifier commentidentifierindex
-                set! commentidentifierindex : + commentidentifierindex 1
-                set! comment : string-append comment : string nextchar
-                when : = commentidentifierindex : - commentstartidentifierlength 1
-                    set! commentstart #f
-                    set! incomment #t
-                    ; reset used variables
-                    set! commentidentifierindex 0
-                    set! comment ""
-                set! nextchar : read-char inport
-                continue
-            ; if we cannot complete the commentcheck, we did not start a real comment. Append it to the content
-            when : and commentstart : not : char=? nextchar : string-ref commentstartidentifier commentidentifierindex
-                set! commentstart #f
-                set! content : string-append content comment
-                set! comment ""
-                set! commentidentifierindex 0
-                set! nextchar : read-char inport
-                continue
-            ; if we are in the comment, just append to the comment
-            when incomment
-                set! comment : string-append comment : string nextchar
-                set! nextchar : read-char inport
-                continue
-            ; if nothing else is true, we are in the content
-            set! content : string-append content : string nextchar
-            set! nextchar : read-char inport
-        ; return the indentation, the content and the comment
-        list indent content comment
+            ; return the indentation, the content and the comment
+            list indent content comment
 
 
 ; Now use the function to split a list of lines
@@ -219,7 +231,11 @@ let*
     set! lines : call-with-input-string text splitlines 
     ; display : list-ref lines 100 ; seems good
     set! lines : linestoindented lines
+    display : list-ref lines 0
+    newline
     display : list-ref lines 1
+    newline
+    display : list-ref lines 96
 
 
 newline