(Arne Babenhauserheide)
2014-02-08: this should add support for [] and {} this should add support for [] and {}
diff --git a/wisp-guile.w b/wisp-guile.w --- a/wisp-guile.w +++ b/wisp-guile.w @@ -119,6 +119,11 @@ Ends with three consecutive linebreaks o or char=? lastchar #\( char=? lastchar #\) + char=? lastchar #\[ + char=? lastchar #\] + ; TODO: Only match for braces {} if curly infix is enabled + char=? lastchar #\{ + char=? lastchar #\} set! instring : not instring ; check if we switch to a comment when @@ -164,9 +169,11 @@ Ends with three consecutive linebreaks o not : string-suffix? text "#" not : char=? #\\ lastchar not : endsinunevenbackslashes : string-drop-right text : min 1 : string-length text - when : equal? "(" : string nextchar + ; TODO: Only match for braces {} if curly infix is enabled + ; FIXME: Catch wrong ordering of parens/brackets/braces like ({)} + when : or (equal? "[" (string nextchar)) (equal? "(" (string nextchar)) (equal? "{" (string nextchar)) set! inbrackets : + inbrackets 1 - when : equal? ")" : string nextchar + when : or (equal? "}" (string nextchar)) (equal? ")" (string nextchar)) (equal? "]" (string nextchar)) set! inbrackets : - inbrackets 1 if : or instring : > inbrackets 0 if : char=? nextchar #\linefeed @@ -414,10 +421,20 @@ Also unescape \\: to :. not : endsinunevenbackslashes : string-drop-right unprocessed 1 set! instring : not instring when : not instring - when : and (equal? ")" lastletter) : not : equal? "#\\)" lastupto3 + when + or + ; TODO: Only match for braces {} if curly infix is enabled + ; FIXME: Catch wrong ordering of parens/brackets/braces like ({)} + and (equal? "{" lastletter) : not : equal? "#\\{" lastupto3 + and (equal? "[" lastletter) : not : equal? "#\\[" lastupto3 + and (equal? "(" lastletter) : not : equal? "#\\(" lastupto3 + set! inbrackets : - inbrackets 1 + when + or + and (equal? ")" lastletter) : not : equal? "#\\)" lastupto3 + and (equal? "]" lastletter) : not : equal? "#\\]" lastupto3 + 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 : - 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