HELP: split-lines
{ $values { "seq" sequence } { "seq'" { $sequence string } } }
{ $description "Splits a string along line breaks." }
+{ $notes "These are considered line breaks:"
+ { $table
+ { { $snippet "\\n" } "Line Feed" }
+ { { $snippet "\\r" } "Carriage Return" }
+ { { $snippet "\\r\\n" } "Carriage Return + Line Feed" }
+ { { $snippet "\\v" } "Line Tabulation" }
+ { { $snippet "\\f" } "Form Feed" }
+ { { $snippet "\\x1c" } "File Separator" }
+ { { $snippet "\\x1d" } "Group Separator" }
+ { { $snippet "\\x1e" } "Record Separator" }
+ { { $snippet "\\x85" } "Next Line (C1 Control Code)" }
+ { { $snippet "\\u002028" } "Line Separator" }
+ { { $snippet "\\u002029" } "Paragraph Separator" }
+ }
+}
{ $examples
{ $example "USING: prettyprint splitting ;" "\"Hello\\r\\nworld\\n\" split-lines ." "{ \"Hello\" \"world\" }" }
} ;
: linebreak? ( ch -- ? )
{ fixnum } declare
- dup CHAR: \n CHAR: \r between? [ drop t ] [ ! LINE FEED, CARRIAGE RETURN, LINE TABULATION, FORM FEED
- dup CHAR: \x1c CHAR: \x1e between? [ drop t ] [ ! FILE, GROUP, RECORD SEPARATOR
+ dup CHAR: \x1f < [
+ dup CHAR: \n CHAR: \r between? [ drop t ] [ ! LINE FEED, CARRIAGE RETURN, LINE TABULATION, FORM FEED
+ CHAR: \x1c CHAR: \x1e between? ! FILE, GROUP, RECORD SEPARATOR
+ ] if
+ ] [
+ dup CHAR: \x85 < [ drop f ] [
dup CHAR: \x85 = [ drop t ] [ ! NEXT LINE (C1 CONTROL CODE)
CHAR: \u002028 CHAR: \u002029 between? ! LINE, PARAGRAPH SEPARATOR
] if