/[suikacvs]/markup/html/whatpm/Whatpm/Charset/DecodeHandle.pm
Suika

Diff of /markup/html/whatpm/Whatpm/Charset/DecodeHandle.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by wakaba, Sun May 18 04:15:52 2008 UTC revision 1.7 by wakaba, Wed Sep 10 10:27:09 2008 UTC
# Line 530  require IO::Handle; Line 530  require IO::Handle;
530    
531  package Whatpm::Charset::DecodeHandle::ByteBuffer;  package Whatpm::Charset::DecodeHandle::ByteBuffer;
532    
533    ## NOTE: Provides a byte buffer wrapper object.
534    
535  sub new ($$) {  sub new ($$) {
536    my $self = bless {    my $self = bless {
537      buffer => '',      buffer => '',
# Line 550  sub close { $_[0]->{filehandle}->close } Line 552  sub close { $_[0]->{filehandle}->close }
552    
553  package Whatpm::Charset::DecodeHandle::Encode;  package Whatpm::Charset::DecodeHandle::Encode;
554    
555    ## NOTE: Provides a Perl |Encode| module wrapper object.
556    
557  sub charset ($) { $_[0]->{charset} }  sub charset ($) { $_[0]->{charset} }
558    
559  sub close ($) { $_[0]->{filehandle}->close }  sub close ($) { $_[0]->{filehandle}->close }
# Line 603  sub getc ($) { Line 607  sub getc ($) {
607    
608    if ($error) {    if ($error) {
609      $r = substr $self->{byte_buffer}, 0, 1, '';      $r = substr $self->{byte_buffer}, 0, 1, '';
610      $self->{onerror}->($self, 'illegal-octets-error', octets => \$r);      my $fallback = $self->{fallback}->{$r};
611        if (defined $fallback) {
612          ## NOTE: This is an HTML5 parse error.
613          $self->{onerror}->($self, 'fallback-char-error', octets => \$r,
614                             char => \$fallback,
615                             level => $self->{level}->{$self->{error_level}->{'fallback-char-error'}});
616          return $fallback;
617        } elsif (exists $self->{fallback}->{$r}) {
618          ## NOTE: This is an HTML5 parse error.  In addition, the octet
619          ## is not assigned with a character.
620          $self->{onerror}->($self, 'fallback-unassigned-error', octets => \$r,
621                             level => $self->{level}->{$self->{error_level}->{'fallback-unassigned-error'}});
622        } else {
623          $self->{onerror}->($self, 'illegal-octets-error', octets => \$r,
624                             level => $self->{level}->{$self->{error_level}->{'illegal-octets-error'}});
625        }
626    }    }
627    
628    return $r;    return $r;
# Line 697  sub getc ($) { Line 716  sub getc ($) {
716      } elsif ($r eq "\xA0" or $r eq "\xFF") {      } elsif ($r eq "\xA0" or $r eq "\xFF") {
717        $etype = 'unassigned-code-point-error';        $etype = 'unassigned-code-point-error';
718      }      }
719      $self->{onerror}->($self, $etype, octets => \$r);      $self->{onerror}->($self, $etype, octets => \$r,
720                           level => $self->{level}->{$self->{error_level}->{$etype}});
721    }    }
722        
723    return $r;    return $r;
# Line 758  sub getc ($) { Line 778  sub getc ($) {
778            } else {            } else {
779              $r = undef;              $r = undef;
780              $self->{onerror}->($self, 'invalid-state-error',              $self->{onerror}->($self, 'invalid-state-error',
781                                 state => $self->{state});                                 state => $self->{state},
782                                   level => $self->{level}->{$self->{error_level}->{'invalid-state-error'}});
783            }            }
784          }          }
785        } elsif ($self->{state} eq 'state_2442') { # 1983        } elsif ($self->{state} eq 'state_2442') { # 1983
# Line 774  sub getc ($) { Line 795  sub getc ($) {
795            } else {            } else {
796              $r = undef;              $r = undef;
797              $self->{onerror}->($self, 'invalid-state-error',              $self->{onerror}->($self, 'invalid-state-error',
798                                 state => $self->{state});                                 state => $self->{state},
799                                   level => $self->{level}->{$self->{error_level}->{'invalid-state-error'}});
800            }            }
801          }          }
802        } elsif ($self->{state} eq 'state_2440') { # 1978        } elsif ($self->{state} eq 'state_2440') { # 1978
# Line 790  sub getc ($) { Line 812  sub getc ($) {
812            } else {            } else {
813              $r = undef;              $r = undef;
814              $self->{onerror}->($self, 'invalid-state-error',              $self->{onerror}->($self, 'invalid-state-error',
815                                 state => $self->{state});                                 state => $self->{state},
816                                   level => $self->{level}->{$self->{error_level}->{'invalid-state-error'}});
817            }            }
818          }          }
819        } else {        } else {
# Line 812  sub getc ($) { Line 835  sub getc ($) {
835          $r .= "(H";          $r .= "(H";
836          $self->{state} = 'state_284A';          $self->{state} = 'state_284A';
837        }        }
838        $self->{onerror}->($self, $etype, octets => \$r);        $self->{onerror}->($self, $etype, octets => \$r,
839                             level => $self->{level}->{$self->{error_level}->{$etype}});
840      }      }
841    } # A    } # A
842        
# Line 875  sub getc ($) { Line 899  sub getc ($) {
899      } elsif ($r =~ /^[\x80\xA0\xFD-\xFF]/) {      } elsif ($r =~ /^[\x80\xA0\xFD-\xFF]/) {
900        $etype = 'unassigned-code-point-error';        $etype = 'unassigned-code-point-error';
901      }      }
902      $self->{onerror}->($self, $etype, octets => \$r);      $self->{onerror}->($self, $etype, octets => \$r,
903                           level => $self->{level}->{$self->{error_level}->{$etype}});
904    }    }
905    
906    return $r;    return $r;

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.7

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24