dup find-` [
dup 1 - pick ?nth CHAR: : =
[ drop name/values ] [ cut swap (parse-value) ] if
- [ rest [ blank? ] trim-head ] dip
+ [ rest [ unicode:blank? ] trim-head ] dip
] [ f swap ] if* ;
: (name=value) ( string -- remain term )
parse-name [ parse-value ] dip associate ;
: name=value ( string -- remain term )
- [ blank? ] trim
- ":`" over subseq? [ (name=value) ] [ f swap ] if ;
+ [ unicode:blank? ] trim
+ dup ":`" subseq-of? [ (name=value) ] [ f swap ] if ;
: name/values ( string -- remain terms )
[ dup { [ empty? not ] [ first CHAR: ` = not ] } 1&& ]
- [ name=value ] produce assoc-combine ;
+ [ name=value ] produce assoc-union-all ;
: parse-txon ( string -- objects )
[ dup empty? not ] [ name=value ] produce nip ;