/[suikacvs]/markup/html/whatpm/Whatpm/HTML.pm.src
Suika

Diff of /markup/html/whatpm/Whatpm/HTML.pm.src

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

revision 1.179 by wakaba, Sun Sep 14 13:09:01 2008 UTC revision 1.180 by wakaba, Sun Sep 14 14:35:43 2008 UTC
# Line 659  sub parse_char_stream ($$$;$) { Line 659  sub parse_char_stream ($$$;$) {
659    
660        my $count = $input->manakai_read_until        my $count = $input->manakai_read_until
661           ($self->{char_buffer},           ($self->{char_buffer},
662            qr/(?!\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/(?![\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}]/,
663            $self->{char_buffer_pos});            $self->{char_buffer_pos});
664        if ($count) {        if ($count) {
665          $self->{line_prev} = $self->{line};          $self->{line_prev} = $self->{line};
# Line 730  sub parse_char_stream ($$$;$) { Line 730  sub parse_char_stream ($$$;$) {
730        }        }
731      }      }
732    };    };
   $self->{prev_char} = [-1, -1, -1];  
   $self->{next_char} = -1;  
733    
734    $self->{read_until} = sub {    $self->{read_until} = sub {
735      #my ($scalar, $specials_range, $offset) = @_;      #my ($scalar, $specials_range, $offset) = @_;
     my $specials_range = $_[1];  
736      return 0 if defined $self->{next_next_char};      return 0 if defined $self->{next_next_char};
737      my $count = $input->manakai_read_until  
738         ($_[0],      my $pattern = qr/(?![$_[1]\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}]/;
739          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}]/,      my $offset = $_[2] || 0;
740          $_[2]);  
741      if ($count) {      if ($self->{char_buffer_pos} < length $self->{char_buffer}) {
742        $self->{column} += $count;        pos ($self->{char_buffer}) = $self->{char_buffer_pos};
743        $self->{column_prev} += $count;        if ($self->{char_buffer} =~ /\G(?>$pattern)+/) {
744        $self->{prev_char} = [-1, -1, -1];          substr ($_[0], $offset)
745        $self->{next_char} = -1;              = substr ($self->{char_buffer}, $-[0], $+[0] - $-[0]);
746            my $count = $+[0] - $-[0];
747            if ($count) {
748              $self->{column} += $count;
749              $self->{char_buffer_pos} += $count;
750              $self->{line_prev} = $self->{line};
751              $self->{column_prev} = $self->{column} - 1;
752              $self->{prev_char} = [-1, -1, -1];
753              $self->{next_char} = -1;
754            }
755            return $count;
756          } else {
757            return 0;
758          }
759        } else {
760          my $count = $input->manakai_read_until ($_[0], $pattern, $_[2]);
761          if ($count) {
762            $self->{column} += $count;
763            $self->{line_prev} = $self->{line};
764            $self->{column_prev} = $self->{column} - 1;
765            $self->{prev_char} = [-1, -1, -1];
766            $self->{next_char} = -1;
767          }
768          return $count;
769      }      }
     return $count;  
770    }; # $self->{read_until}    }; # $self->{read_until}
 $self->{read_until}=sub{0};  
771    
772    my $onerror = $_[2] || sub {    my $onerror = $_[2] || sub {
773      my (%opt) = @_;      my (%opt) = @_;
# Line 923  sub _initialize_tokenizer ($) { Line 941  sub _initialize_tokenizer ($) {
941    delete $self->{self_closing};    delete $self->{self_closing};
942    $self->{char_buffer} = '';    $self->{char_buffer} = '';
943    $self->{char_buffer_pos} = 0;    $self->{char_buffer_pos} = 0;
944    # $self->{next_char}    $self->{prev_char} = [-1, -1, -1];
945      $self->{next_char} = -1;
946    !!!next-input-character;    !!!next-input-character;
947    $self->{token} = [];    $self->{token} = [];
948    # $self->{escape}    # $self->{escape}
# Line 7805  sub set_inner_html ($$$$;$) { Line 7824  sub set_inner_html ($$$$;$) {
7824      $p->{set_next_char} = sub {      $p->{set_next_char} = sub {
7825        my $self = shift;        my $self = shift;
7826    
       pop @{$self->{prev_char}};  
       unshift @{$self->{prev_char}}, $self->{next_char};  
   
7827        my $char = '';        my $char = '';
7828        if (defined $self->{next_next_char}) {        if (defined $self->{next_next_char}) {
7829          $char = $self->{next_next_char};          $char = $self->{next_next_char};
7830          delete $self->{next_next_char};          delete $self->{next_next_char};
7831          $self->{next_char} = ord $char;          $self->{next_char} = ord $char;
7832        } else {        } else {
7833            $self->{char_buffer} = '';
7834            $self->{char_buffer_pos} = 0;
7835            
7836            my $count = $input->manakai_read_until
7837                ($self->{char_buffer},
7838                 qr/(?![\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}]/,
7839                   $self->{char_buffer_pos});
7840            if ($count) {
7841              $self->{line_prev} = $self->{line};
7842              $self->{column_prev} = $self->{column};
7843              $self->{column}++;
7844              $self->{next_char}
7845                  = ord substr ($self->{char_buffer},
7846                                $self->{char_buffer_pos}++, 1);
7847              return;
7848            }
7849            
7850          if ($input->read ($char, 1)) {          if ($input->read ($char, 1)) {
7851            $self->{next_char} = ord $char;            $self->{next_char} = ord $char;
7852          } else {          } else {
# Line 7876  sub set_inner_html ($$$$;$) { Line 7909  sub set_inner_html ($$$$;$) {
7909          }          }
7910        }        }
7911      };      };
     $p->{prev_char} = [-1, -1, -1];  
     $p->{next_char} = -1;  
7912    
7913      $p->{read_until} = sub {      $p->{read_until} = sub {
7914        #my ($scalar, $specials_range, $offset) = @_;        #my ($scalar, $specials_range, $offset) = @_;
       my $specials_range = $_[1];  
7915        return 0 if defined $p->{next_next_char};        return 0 if defined $p->{next_next_char};
7916        my $count = $input->manakai_read_until  
7917          ($_[0],        my $pattern = qr/(?![$_[1]\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}]/;
7918           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}]/,        my $offset = $_[2] || 0;
7919           $_[2]);        
7920        if ($count) {        if ($p->{char_buffer_pos} < length $p->{char_buffer}) {
7921          $p->{column} += $count;          pos ($p->{char_buffer}) = $p->{char_buffer_pos};
7922          $p->{column_prev} += $count;          if ($p->{char_buffer} =~ /\G(?>$pattern)+/) {
7923          $p->{prev_char} = [-1, -1, -1];            substr ($_[0], $offset)
7924          $p->{next_char} = -1;                = substr ($p->{char_buffer}, $-[0], $+[0] - $-[0]);
7925              my $count = $+[0] - $-[0];
7926              if ($count) {
7927                $p->{column} += $count;
7928                $p->{char_buffer_pos} += $count;
7929                $p->{line_prev} = $p->{line};
7930                $p->{column_prev} = $p->{column} - 1;
7931                $p->{prev_char} = [-1, -1, -1];
7932                $p->{next_char} = -1;
7933              }
7934              return $count;
7935            } else {
7936              return 0;
7937            }
7938          } else {
7939            my $count = $input->manakai_read_until ($_[0], $pattern, $_[2]);
7940            if ($count) {
7941              $p->{column} += $count;
7942              $p->{column_prev} += $count;
7943              $p->{prev_char} = [-1, -1, -1];
7944              $p->{next_char} = -1;
7945            }
7946            return $count;
7947        }        }
       return $count;  
7948      }; # $p->{read_until}      }; # $p->{read_until}
7949    
7950      my $ponerror = $onerror || sub {      my $ponerror = $onerror || sub {

Legend:
Removed from v.1.179  
changed lines
  Added in v.1.180

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24