/[suikacvs]/markup/html/whatpm/Whatpm/CSS/Tokenizer.pm
Suika

Diff of /markup/html/whatpm/Whatpm/CSS/Tokenizer.pm

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

revision 1.7 by wakaba, Sat Sep 8 10:21:04 2007 UTC revision 1.8 by wakaba, Sat Sep 8 11:09:41 2007 UTC
# Line 803  sub get_next_token ($) { Line 803  sub get_next_token ($) {
803                URI_PREFIX_TOKEN, URI_PREFIX_INVALID_TOKEN,                URI_PREFIX_TOKEN, URI_PREFIX_INVALID_TOKEN,
804                URI_PREFIX_INVALID_TOKEN, URI_PREFIX_INVALID_TOKEN,                URI_PREFIX_INVALID_TOKEN, URI_PREFIX_INVALID_TOKEN,
805            }->{$self->{t}->{type}};            }->{$self->{t}->{type}};
806            $self->{t}->{value} .= "\x0D\x0A";            $self->{t}->{value} .= "\x0D";
807            $self->{state} = URI_UNQUOTED_STATE;            $self->{state} = ESCAPE_BEFORE_LF_STATE;
808            $self->{c} = $self->{get_char}->();            $self->{c} = $self->{get_char}->();
809            redo A;            redo A;
810          } else {          } else {
811            ## Note: In |nl| in ... in |string| or |ident|.            ## Note: In |nl| in ... in |string| or |ident|.
812            $self->{t}->{value} .= "\x0D\x0A";            $self->{t}->{value} .= "\x0D";
813            $self->{state} = ESCAPE_BEFORE_LF_STATE;            $self->{state} = ESCAPE_BEFORE_LF_STATE;
814            $self->{c} = $self->{get_char}->();            $self->{c} = $self->{get_char}->();
815            redo A;            redo A;
# Line 840  sub get_next_token ($) { Line 840  sub get_next_token ($) {
840            return {type => DELIM_TOKEN, value => '\\'};            return {type => DELIM_TOKEN, value => '\\'};
841            #redo A;            #redo A;
842          }          }
843        } else {        } elsif ($q == 1) {
844          $self->{state} = $q == 1 ? URI_UNQUOTED_STATE : STRING_STATE;          $self->{state} = URI_UNQUOTED_STATE;
845          $self->{c} = $self->{get_char}->();          $self->{c} = $self->{get_char}->();
846          redo A;          redo A;
847          } else {
848            unshift @{$self->{token}}, {type => DELIM_TOKEN, value => '\\'};
849            $self->{t}->{type} = {
850              STRING_TOKEN, INVALID_TOKEN,
851              URI_TOKEN, URI_INVALID_TOKEN,
852              URI_PREFIX_TOKEN, URI_PREFIX_INVALID_TOKEN,
853            }->{$self->{t}->{type}} || $self->{t}->{type};
854            $self->{state} = BEFORE_TOKEN_STATE;
855            # reprocess
856            return $self->{t};
857            #redo A;
858        }        }
859      } elsif ($self->{state} == ESCAPE_STATE) {      } elsif ($self->{state} == ESCAPE_STATE) {
860        ## NOTE: third..seventh character of |unicode| in |escape|.        ## NOTE: third..seventh character of |unicode| in |escape|.
# Line 907  sub get_next_token ($) { Line 918  sub get_next_token ($) {
918      } elsif ($self->{state} == ESCAPE_BEFORE_LF_STATE) {      } elsif ($self->{state} == ESCAPE_BEFORE_LF_STATE) {
919        ## NOTE: |\n| in |\r\n| in |unicode| in |escape|.        ## NOTE: |\n| in |\r\n| in |unicode| in |escape|.
920        if ($self->{c} == 0x000A) { # \n        if ($self->{c} == 0x000A) { # \n
921          $self->{t}->{value} .= chr $char;          $self->{t}->{value} .= chr $self->{c};
922          $self->{state} = $q == 0 ? NAME_STATE :          $self->{state} = $q == 0 ? NAME_STATE :
923              $q == 1 ? URI_UNQUOTED_STATE : STRING_STATE;              $q == 1 ? URI_UNQUOTED_STATE : STRING_STATE;
924          $self->{c} = $self->{get_char}->();          $self->{c} = $self->{get_char}->();
925          redo A;          redo A;
926        } else {        } else {
         $self->{t}->{value} .= chr $char;  
927          $self->{state} = $q == 0 ? NAME_STATE :          $self->{state} = $q == 0 ? NAME_STATE :
928              $q == 1 ? URI_UNQUOTED_STATE : STRING_STATE;              $q == 1 ? URI_UNQUOTED_STATE : STRING_STATE;
929          # reconsume          # reprocess
930          redo A;          redo A;
931        }        }
932      } elsif ($self->{state} == STRING_STATE) {      } elsif ($self->{state} == STRING_STATE) {

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24