(Arne Babenhauserheide)
2013-08-25: let’s reduce the value by one: (- 1 value)… arg, prefix notation! → let’s reduce the value by one: (- 1 value)… arg, prefix notation! → (- value 1)
diff --git a/wisp-guile.w b/wisp-guile.w
--- a/wisp-guile.w
+++ b/wisp-guile.w
@@ -282,8 +282,7 @@ define : wisp2lisp-add-inline-colon-brac
; process the content in reverse direction, so we can detect ' : and turn it into '(
; FIXME: It gets here. Then it start treating all lines as one (removing linebreaks).
; let linebracketizer ( ( instring #f ) ( inbrackets 0 ) ( bracketstoadd 0 ) ( unprocessed content ) ( processed "" ) )
- let linebracketizer
- ( instring #f ) ( inbrackets 0 ) ( bracketstoadd 0 ) ( unprocessed content ) ( processed "" )
+ let linebracketizer : ( instring #f ) ( inbrackets 0 ) ( bracketstoadd 0 ) ( unprocessed content ) ( processed "" )
if : < (string-length unprocessed) 2
; if unprocessed is < 2 chars, it cannot contain ": ". We are done.
list
@@ -293,15 +292,25 @@ define : wisp2lisp-add-inline-colon-brac
; else
let
: lastletter : string-take-right unprocessed 1
- lastupto3 : string-take-right unprocessed : max 3 : length unprocessed
+ lastupto3 : string-take-right unprocessed : min 3 : string-length unprocessed
; check if we’re in a string
- when : and (equal? "\"" lastletter) : not : equal? "#\\\"" lastupto3
+ when
+ or
+ and
+ not instring
+ equal? "\"" lastletter
+ not : equal? "#\\\"" lastupto3
+ and
+ . instring
+ equal? "\"" lastletter
+ string-suffix? "\\\"" lastupto3
+ not : equal? "\\\\\"" lastupto3
set! instring : not instring
when : not instring
when : and (equal? ")" lastletter) : not : equal? "#\\)" lastupto3
set! inbrackets : + 1 inbrackets ; remember that we're going backwards!
when : and (equal? "(" lastletter) : not : equal? "#\\(" lastupto3
- set! inbrackets : - 1 inbrackets
+ set! inbrackets : - inbrackets 1
; error handling: inbrackets must never be smaller than 0 - due to the line splitting.
when : < inbrackets 0
throw 'more-inline-brackets-closed-than-opened inbrackets line
@@ -320,7 +329,7 @@ define : wisp2lisp-add-inline-colon-brac
string-append (string-drop-right unprocessed 2)
string-append "(" processed
; turn " ' (" into " '(", do not modify unprocessed, except to shorten it!
- if : and (string-prefix? "(" processed) (> (string-length unprocessed) 3) : equal? " ' " : string-take-right unprocessed 3
+ if : and (string-prefix? "(" processed) : equal? " ' " lastupto3
; leave out the second space
linebracketizer instring inbrackets bracketstoadd
. (string-append (string-drop-right unprocessed 2) "'")
@@ -346,6 +355,9 @@ define : line-add-starting-bracket line
define : line-add-closing-brackets line number
. "Add a closing bracket to the line."
+ display number
+ display line
+ newline
list
line-indent line
string-append
@@ -364,7 +376,6 @@ define : line-indent-bracketstoclose lin
define : wisp2lisp-parse lisp prev lines
. "Parse the body of the wisp-code."
- ; let bracketizer : (levels '(0)) (
set! lines : map-in-order wisp2lisp-add-inline-colon-brackets lines
let bracketizer : (levels '(0)) (pre prev) (unprocessed lines) (processed lisp)
; levels is the list of levels, with the lowest to the right. i.e: '(12 8 4 0)
@@ -475,7 +486,7 @@ let*
; line-functions for details.
textlines : split-wisp-lines text
lines : linestoindented textlines
- ; lisp : wisp2lisp lines
+ lisp : wisp2lisp lines
display : length textlines
newline
display : length lines
@@ -483,7 +494,7 @@ let*
; display : length lisp
newline
; display : list-ref lines 100 ; seems good
- let show : (processed '()) (unprocessed lines)
+ let show : (processed '()) (unprocessed lisp)
when : not : equal? unprocessed '()
let : : next : list-ref unprocessed 0
display : length processed