diff --git a/core/modern/out/out.factor b/core/modern/out/out.factor index 5ce38b3849..a0b640b0bf 100644 --- a/core/modern/out/out.factor +++ b/core/modern/out/out.factor @@ -10,21 +10,13 @@ IN: modern.out symbol: last-slice : replace-whitespace ( string -- string' ) + dup [ "\r\n" member? ] find drop [ tail ] when* [ dup blank? [ drop char: \s ] unless ] map ; -: replace-first-whitespace ( string -- string' ) - dup [ "\r\n" member? ] find drop [ - tail replace-whitespace - ] when* ; - : write-whitespace ( obj -- ) [ last-slice get [ swap slice-between ] [ slice-before ] if* replace-whitespace io:write ] [ last-slice namespaces:set ] bi ; -: write-first-whitespace ( obj -- ) - [ last-slice get [ swap slice-between ] [ slice-before ] if* replace-first-whitespace io:write ] - [ last-slice namespaces:set ] bi ; - defer: write-literal GENERIC: write-literal ( obj -- ) ; ! M: object write-literal lexed-underlying write ; @@ -35,13 +27,13 @@ M: array write-literal [ write-literal ] each ; M: tag-literal write-literal { - [ seq>> 0 swap nth write-first-whitespace ] + [ seq>> 0 swap nth write-whitespace ] [ tag>> write ] } cleave ; M: single-matched-literal write-literal { - [ seq>> 0 swap nth write-first-whitespace ] + [ seq>> 0 swap nth write-whitespace ] [ tag>> write ] [ seq>> 1 swap nth write-whitespace ] [ delimiter>> write ] @@ -52,7 +44,7 @@ M: single-matched-literal write-literal M: double-matched-literal write-literal { - [ seq>> 0 swap nth write-first-whitespace ] + [ seq>> 0 swap nth write-whitespace ] [ tag>> io:write ] [ seq>> 1 swap nth write-whitespace ] [ delimiter>> io:write ] @@ -64,7 +56,7 @@ M: double-matched-literal write-literal M: dquote-literal write-literal { - [ seq>> 0 swap nth write-first-whitespace ] + [ seq>> 0 swap nth write-whitespace ] [ tag>> io:write ] [ seq>> 1 swap nth write-whitespace ] [ delimiter>> io:write ] @@ -76,7 +68,7 @@ M: dquote-literal write-literal M: backtick-literal write-literal { - [ seq>> 0 swap nth write-first-whitespace ] + [ seq>> 0 swap nth write-whitespace ] [ tag>> io:write ] [ seq>> 1 swap nth write-whitespace ] [ delimiter>> io:write ] @@ -86,7 +78,7 @@ M: backtick-literal write-literal M: backslash-literal write-literal { - [ seq>> 0 swap nth write-first-whitespace ] + [ seq>> 0 swap nth write-whitespace ] [ tag>> io:write ] [ seq>> 1 swap nth write-whitespace ] [ delimiter>> io:write ] @@ -96,7 +88,7 @@ M: backslash-literal write-literal M: line-comment-literal write-literal { - [ seq>> 0 swap nth write-first-whitespace ] + [ seq>> 0 swap nth write-whitespace ] [ tag>> io:write ] [ seq>> 1 swap nth write-whitespace ] [ delimiter>> io:write ] @@ -106,7 +98,7 @@ M: line-comment-literal write-literal M: uppercase-colon-literal write-literal { - [ seq>> 0 swap nth write-first-whitespace ] + [ seq>> 0 swap nth write-whitespace ] [ tag>> write ] [ seq>> 1 swap nth write-whitespace ] [ delimiter>> write ] @@ -117,7 +109,7 @@ M: uppercase-colon-literal write-literal M: lowercase-colon-literal write-literal { - [ seq>> 0 swap nth write-first-whitespace ] + [ seq>> 0 swap nth write-whitespace ] [ tag>> io:write ] [ seq>> 1 swap nth write-whitespace ] [ delimiter>> io:write ] @@ -126,7 +118,7 @@ M: lowercase-colon-literal write-literal M: left-decorator-literal write-literal { - [ seq>> 0 swap nth write-first-whitespace ] + [ seq>> 0 swap nth write-whitespace ] [ delimiter>> io:write ] [ payload>> write-literal ] ! don't need write-whitespace here, the recursion does it } cleave ;