mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
77 lines
1.9 KiB
Raku
77 lines
1.9 KiB
Raku
use v6;
|
|
|
|
use Test;
|
|
|
|
# L<S02/Whitespace and Comments>
|
|
|
|
=begin kwid
|
|
|
|
= DESCRIPTION
|
|
|
|
Tests that the List quoting parser properly
|
|
ignores whitespace in lists. This becomes important
|
|
if your line endings are \x0d\x0a.
|
|
|
|
Characters that should be ignored are:
|
|
|
|
\t
|
|
\r
|
|
\n
|
|
\x20
|
|
|
|
Most likely there are more. James tells me that
|
|
the maximum Unicode char is \x10FFFF , so maybe
|
|
we should simply (re)construct the whitespace
|
|
list via IsSpace or \s on the fly.
|
|
|
|
Of course, in the parsed result, no item should
|
|
contain whitespace.
|
|
|
|
C<\xA0> is specifically an I<nonbreaking> whitespace
|
|
character and thus should B<not> break the list.
|
|
|
|
=end kwid
|
|
|
|
#?pugs emit if $?PUGS_BACKEND ne "BACKEND_PUGS" {
|
|
#?pugs emit skip_rest "PIL2JS and PIL-Run do not support EVAL() yet.";
|
|
#?pugs emit exit;
|
|
#?pugs emit }
|
|
|
|
my @list = <a b c d>;
|
|
my @separators = ("\t","\r","\n"," ");
|
|
my @nonseparators = (",","/","\\",";","\xa0");
|
|
|
|
plan +@separators + @nonseparators + 3;
|
|
|
|
for @separators -> $sep {
|
|
my $str = "<$sep" ~ @list.join("$sep$sep") ~ "$sep>";
|
|
my @res = EVAL $str;
|
|
|
|
my $vis = sprintf "%02x", ord $sep;
|
|
is( @res, @list, "'\\x$vis\\x$vis' is properly parsed as list whitespace")
|
|
};
|
|
|
|
for @nonseparators -> $sep {
|
|
my $ex = @list.join($sep);
|
|
my $str = "<" ~$ex~ ">";
|
|
my @res = EVAL $str;
|
|
|
|
my $vis = sprintf "%02x", ord $sep;
|
|
#?rakudo emit if $sep eq "\xa0" {
|
|
#?rakudo emit todo('\xa0 should not be a separator for list quotes');
|
|
#?rakudo emit };
|
|
#?niecza emit if $sep eq "\xa0" {
|
|
#?niecza emit todo('\xa0 should not be a separator for list quotes');
|
|
#?niecza emit };
|
|
is( @res, [@list.join($sep)], "'\\x$vis' does not split in a whitespace quoted list")
|
|
};
|
|
|
|
is < foo
|
|
>, 'foo', 'various combinations of whitespaces are stripped';
|
|
|
|
# RT #73772
|
|
isa_ok < >, Parcel, '< > (only whitespaces) is empty Parcel';
|
|
is < >.elems, 0, ".. and it's really empty";
|
|
|
|
# vim: ft=perl6
|