ini-file: cleanup using \f\v escapes.

clean-linux-x86-32
John Benediktsson 2019-09-24 20:13:40 -07:00
parent 5f1f2a00d6
commit df295d5ef9
1 changed files with 10 additions and 17 deletions

View File

@ -43,12 +43,12 @@ USE: xml.entities
: escape-string ( str -- str' ) : escape-string ( str -- str' )
H{ H{
{ CHAR: \a "\\a" } { CHAR: \a "\\a" }
{ 0x08 "\\b" } { CHAR: \b "\\b" }
{ 0x0c "\\f" } { CHAR: \f "\\f" }
{ CHAR: \n "\\n" } { CHAR: \n "\\n" }
{ CHAR: \r "\\r" } { CHAR: \r "\\r" }
{ CHAR: \t "\\t" } { CHAR: \t "\\t" }
{ 0x0b "\\v" } { CHAR: \b "\\v" }
{ CHAR: ' "\\'" } { CHAR: ' "\\'" }
{ CHAR: \" "\\\"" } { CHAR: \" "\\\"" }
{ CHAR: \\ "\\\\" } { CHAR: \\ "\\\\" }
@ -60,14 +60,7 @@ USE: xml.entities
} escape-string-by ; } escape-string-by ;
: space? ( ch -- ? ) : space? ( ch -- ? )
{ "\s\t\n\r\f\v" member-eq? ;
[ CHAR: \s = ]
[ CHAR: \t = ]
[ CHAR: \n = ]
[ CHAR: \r = ]
[ 0x0c = ] ! \f
[ 0x0b = ] ! \v
} 1|| ;
: unspace ( str -- str' ) : unspace ( str -- str' )
[ space? ] trim ; [ space? ] trim ;
@ -92,7 +85,7 @@ SYMBOL: option
} 1&& ; } 1&& ;
: line-continues? ( line -- ? ) : line-continues? ( line -- ? )
{ [ empty? not ] [ last CHAR: \ = ] } 1&& ; ?last CHAR: \ = ;
: section, ( -- ) : section, ( -- )
section get [ , ] when* ; section get [ , ] when* ;
@ -130,9 +123,9 @@ PRIVATE>
: write-ini ( assoc -- ) : write-ini ( assoc -- )
[ [
dup string? dup string? [
[ [ escape-string ] bi@ "%s=%s\n" printf ] [ escape-string ] bi@ "%s=%s\n" printf
[ ] [
[ escape-string "[%s]\n" printf ] dip [ escape-string "[%s]\n" printf ] dip
[ [ escape-string ] bi@ "%s=%s\n" printf ] [ [ escape-string ] bi@ "%s=%s\n" printf ]
assoc-each nl assoc-each nl