| 561 |
my $char_onerror = sub { |
my $char_onerror = sub { |
| 562 |
my (undef, $type, %opt) = @_; |
my (undef, $type, %opt) = @_; |
| 563 |
!!!parse-error (layer => 'encode', |
!!!parse-error (layer => 'encode', |
| 564 |
%opt, type => $type, |
line => $self->{line}, column => $self->{column} + 1, |
| 565 |
line => $self->{line}, column => $self->{column} + 1); |
%opt, type => $type); |
| 566 |
if ($opt{octets}) { |
if ($opt{octets}) { |
| 567 |
${$opt{octets}} = "\x{FFFD}"; # relacement character |
${$opt{octets}} = "\x{FFFD}"; # relacement character |
| 568 |
} |
} |
| 720 |
return 0 if defined $self->{next_next_char}; |
return 0 if defined $self->{next_next_char}; |
| 721 |
my $count = $input->manakai_read_until |
my $count = $input->manakai_read_until |
| 722 |
($_[0], |
($_[0], |
| 723 |
qr/(?![$specials_range\x{FDD0}-\x{FDDF}\x{FFFE}\x{FFFF}\x{1FFFE}\x{1FFFF}\x{2FFFE}\x{2FFFF}\x{3FFFE}\x{3FFFF}\x{4FFFE}\x{4FFFF}\x{5FFFE}\x{5FFFF}\x{6FFFE}\x{6FFFF}\x{7FFFE}\x{7FFFF}\x{8FFFE}\x{8FFFF}\x{9FFFE}\x{9FFFF}\x{AFFFE}\x{AFFFF}\x{BFFFE}\x{BFFFF}\x{CFFFE}\x{CFFFF}\x{DFFFE}\x{DFFFF}\x{EFFFE}\x{EFFFF}\x{FFFFE}\x{FFFFF}])[\x20-\x7E\xA0-\x{D7FF}\x{E000}-\x{10FFFD}]/, |
qr/(?![$specials_range\x{FDD0}-\x{FDDF}\x{FFFD}-\x{FFFF}\x{1FFFE}\x{1FFFF}\x{2FFFE}\x{2FFFF}\x{3FFFE}\x{3FFFF}\x{4FFFE}\x{4FFFF}\x{5FFFE}\x{5FFFF}\x{6FFFE}\x{6FFFF}\x{7FFFE}\x{7FFFF}\x{8FFFE}\x{8FFFF}\x{9FFFE}\x{9FFFF}\x{AFFFE}\x{AFFFF}\x{BFFFE}\x{BFFFF}\x{CFFFE}\x{CFFFF}\x{DFFFE}\x{DFFFF}\x{EFFFE}\x{EFFFF}\x{FFFFE}\x{FFFFF}])[\x20-\x7E\xA0-\x{D7FF}\x{E000}-\x{10FFFD}]/, |
| 724 |
$_[2]); |
$_[2]); |
| 725 |
|
## NOTE: We need to exclude U+FFFD, otherwise reported line/column |
| 726 |
|
## of unassigned/illegal code point error would be wrong. |
| 727 |
if ($count) { |
if ($count) { |
| 728 |
$self->{column} += $count; |
$self->{column} += $count; |
| 729 |
$self->{column_prev} += $count; |
$self->{column_prev} += $count; |
| 1745 |
} else { |
} else { |
| 1746 |
!!!cp (100); |
!!!cp (100); |
| 1747 |
$self->{current_attribute}->{value} .= chr ($self->{next_char}); |
$self->{current_attribute}->{value} .= chr ($self->{next_char}); |
| 1748 |
|
$self->{read_until}->($self->{current_attribute}->{value}, |
| 1749 |
|
q["&], |
| 1750 |
|
length $self->{current_attribute}->{value}); |
| 1751 |
|
|
| 1752 |
## Stay in the state |
## Stay in the state |
| 1753 |
!!!next-input-character; |
!!!next-input-character; |
| 1754 |
redo A; |
redo A; |
| 1796 |
} else { |
} else { |
| 1797 |
!!!cp (106); |
!!!cp (106); |
| 1798 |
$self->{current_attribute}->{value} .= chr ($self->{next_char}); |
$self->{current_attribute}->{value} .= chr ($self->{next_char}); |
| 1799 |
|
$self->{read_until}->($self->{current_attribute}->{value}, |
| 1800 |
|
q['&], |
| 1801 |
|
length $self->{current_attribute}->{value}); |
| 1802 |
|
|
| 1803 |
## Stay in the state |
## Stay in the state |
| 1804 |
!!!next-input-character; |
!!!next-input-character; |
| 1805 |
redo A; |
redo A; |
| 1882 |
!!!cp (116); |
!!!cp (116); |
| 1883 |
} |
} |
| 1884 |
$self->{current_attribute}->{value} .= chr ($self->{next_char}); |
$self->{current_attribute}->{value} .= chr ($self->{next_char}); |
| 1885 |
|
$self->{read_until}->($self->{current_attribute}->{value}, |
| 1886 |
|
q["'=& >], |
| 1887 |
|
length $self->{current_attribute}->{value}); |
| 1888 |
|
|
| 1889 |
## Stay in the state |
## Stay in the state |
| 1890 |
!!!next-input-character; |
!!!next-input-character; |
| 1891 |
redo A; |
redo A; |
| 2030 |
} else { |
} else { |
| 2031 |
!!!cp (126); |
!!!cp (126); |
| 2032 |
$self->{current_token}->{data} .= chr ($self->{next_char}); # comment |
$self->{current_token}->{data} .= chr ($self->{next_char}); # comment |
| 2033 |
|
$self->{read_until}->($self->{current_token}->{data}, |
| 2034 |
|
q[>], |
| 2035 |
|
length $self->{current_token}->{data}); |
| 2036 |
|
|
| 2037 |
## Stay in the state. |
## Stay in the state. |
| 2038 |
!!!next-input-character; |
!!!next-input-character; |
| 2039 |
redo A; |
redo A; |
| 2268 |
} else { |
} else { |
| 2269 |
!!!cp (147); |
!!!cp (147); |
| 2270 |
$self->{current_token}->{data} .= chr ($self->{next_char}); # comment |
$self->{current_token}->{data} .= chr ($self->{next_char}); # comment |
| 2271 |
|
$self->{read_until}->($self->{current_token}->{data}, |
| 2272 |
|
q[-], |
| 2273 |
|
length $self->{current_token}->{data}); |
| 2274 |
|
|
| 2275 |
## Stay in the state |
## Stay in the state |
| 2276 |
!!!next-input-character; |
!!!next-input-character; |
| 2277 |
redo A; |
redo A; |
| 2637 |
!!!cp (190); |
!!!cp (190); |
| 2638 |
$self->{current_token}->{public_identifier} # DOCTYPE |
$self->{current_token}->{public_identifier} # DOCTYPE |
| 2639 |
.= chr $self->{next_char}; |
.= chr $self->{next_char}; |
| 2640 |
|
$self->{read_until}->($self->{current_token}->{public_identifier}, |
| 2641 |
|
q[">], |
| 2642 |
|
length $self->{current_token}->{public_identifier}); |
| 2643 |
|
|
| 2644 |
## Stay in the state |
## Stay in the state |
| 2645 |
!!!next-input-character; |
!!!next-input-character; |
| 2646 |
redo A; |
redo A; |
| 2677 |
!!!cp (194); |
!!!cp (194); |
| 2678 |
$self->{current_token}->{public_identifier} # DOCTYPE |
$self->{current_token}->{public_identifier} # DOCTYPE |
| 2679 |
.= chr $self->{next_char}; |
.= chr $self->{next_char}; |
| 2680 |
|
$self->{read_until}->($self->{current_token}->{public_identifier}, |
| 2681 |
|
q['>], |
| 2682 |
|
length $self->{current_token}->{public_identifier}); |
| 2683 |
|
|
| 2684 |
## Stay in the state |
## Stay in the state |
| 2685 |
!!!next-input-character; |
!!!next-input-character; |
| 2686 |
redo A; |
redo A; |
| 2817 |
!!!cp (210); |
!!!cp (210); |
| 2818 |
$self->{current_token}->{system_identifier} # DOCTYPE |
$self->{current_token}->{system_identifier} # DOCTYPE |
| 2819 |
.= chr $self->{next_char}; |
.= chr $self->{next_char}; |
| 2820 |
|
$self->{read_until}->($self->{current_token}->{system_identifier}, |
| 2821 |
|
q[">], |
| 2822 |
|
length $self->{current_token}->{system_identifier}); |
| 2823 |
|
|
| 2824 |
## Stay in the state |
## Stay in the state |
| 2825 |
!!!next-input-character; |
!!!next-input-character; |
| 2826 |
redo A; |
redo A; |
| 2857 |
!!!cp (214); |
!!!cp (214); |
| 2858 |
$self->{current_token}->{system_identifier} # DOCTYPE |
$self->{current_token}->{system_identifier} # DOCTYPE |
| 2859 |
.= chr $self->{next_char}; |
.= chr $self->{next_char}; |
| 2860 |
|
$self->{read_until}->($self->{current_token}->{system_identifier}, |
| 2861 |
|
q['>], |
| 2862 |
|
length $self->{current_token}->{system_identifier}); |
| 2863 |
|
|
| 2864 |
## Stay in the state |
## Stay in the state |
| 2865 |
!!!next-input-character; |
!!!next-input-character; |
| 2866 |
redo A; |
redo A; |
| 2921 |
redo A; |
redo A; |
| 2922 |
} else { |
} else { |
| 2923 |
!!!cp (221); |
!!!cp (221); |
| 2924 |
|
my $s = ''; |
| 2925 |
|
$self->{read_until}->($s, q[>], 0); |
| 2926 |
|
|
| 2927 |
## Stay in the state |
## Stay in the state |
| 2928 |
!!!next-input-character; |
!!!next-input-character; |
| 2929 |
redo A; |
redo A; |
| 2952 |
} else { |
} else { |
| 2953 |
!!!cp (221.4); |
!!!cp (221.4); |
| 2954 |
$self->{current_token}->{data} .= chr $self->{next_char}; |
$self->{current_token}->{data} .= chr $self->{next_char}; |
| 2955 |
|
$self->{read_until}->($self->{current_token}->{data}, |
| 2956 |
|
q<]>, |
| 2957 |
|
length $self->{current_token}->{data}); |
| 2958 |
|
|
| 2959 |
## Stay in the state. |
## Stay in the state. |
| 2960 |
!!!next-input-character; |
!!!next-input-character; |
| 2961 |
redo A; |
redo A; |