@@ 1059-1093 (lines=35) @@ | ||
1056 | } |
|
1057 | } |
|
1058 | ||
1059 | private function attributeValueDoubleQuotedState() |
|
1060 | { |
|
1061 | // Consume the next input character: |
|
1062 | $this->char++; |
|
1063 | $char = $this->character($this->char); |
|
1064 | ||
1065 | if ($char === '"') { |
|
1066 | /* U+0022 QUOTATION MARK (") |
|
1067 | Switch to the before attribute name state. */ |
|
1068 | $this->state = 'beforeAttributeName'; |
|
1069 | ||
1070 | } elseif ($char === '&') { |
|
1071 | /* U+0026 AMPERSAND (&) |
|
1072 | Switch to the entity in attribute value state. */ |
|
1073 | $this->entityInAttributeValueState('double'); |
|
1074 | ||
1075 | } elseif ($this->char === $this->EOF) { |
|
1076 | /* EOF |
|
1077 | Parse error. Emit the current tag token. Reconsume the character |
|
1078 | in the data state. */ |
|
1079 | $this->emitToken($this->token); |
|
1080 | ||
1081 | $this->char--; |
|
1082 | $this->state = 'data'; |
|
1083 | ||
1084 | } else { |
|
1085 | /* Anything else |
|
1086 | Append the current input character to the current attribute's value. |
|
1087 | Stay in the attribute value (double-quoted) state. */ |
|
1088 | $last = count($this->token['attr']) - 1; |
|
1089 | $this->token['attr'][$last]['value'] .= $char; |
|
1090 | ||
1091 | $this->state = 'attributeValueDoubleQuoted'; |
|
1092 | } |
|
1093 | } |
|
1094 | ||
1095 | private function attributeValueSingleQuotedState() |
|
1096 | { |
|
@@ 1095-1129 (lines=35) @@ | ||
1092 | } |
|
1093 | } |
|
1094 | ||
1095 | private function attributeValueSingleQuotedState() |
|
1096 | { |
|
1097 | // Consume the next input character: |
|
1098 | $this->char++; |
|
1099 | $char = $this->character($this->char); |
|
1100 | ||
1101 | if ($char === '\'') { |
|
1102 | /* U+0022 QUOTATION MARK (') |
|
1103 | Switch to the before attribute name state. */ |
|
1104 | $this->state = 'beforeAttributeName'; |
|
1105 | ||
1106 | } elseif ($char === '&') { |
|
1107 | /* U+0026 AMPERSAND (&) |
|
1108 | Switch to the entity in attribute value state. */ |
|
1109 | $this->entityInAttributeValueState('single'); |
|
1110 | ||
1111 | } elseif ($this->char === $this->EOF) { |
|
1112 | /* EOF |
|
1113 | Parse error. Emit the current tag token. Reconsume the character |
|
1114 | in the data state. */ |
|
1115 | $this->emitToken($this->token); |
|
1116 | ||
1117 | $this->char--; |
|
1118 | $this->state = 'data'; |
|
1119 | ||
1120 | } else { |
|
1121 | /* Anything else |
|
1122 | Append the current input character to the current attribute's value. |
|
1123 | Stay in the attribute value (single-quoted) state. */ |
|
1124 | $last = count($this->token['attr']) - 1; |
|
1125 | $this->token['attr'][$last]['value'] .= $char; |
|
1126 | ||
1127 | $this->state = 'attributeValueSingleQuoted'; |
|
1128 | } |
|
1129 | } |
|
1130 | ||
1131 | private function attributeValueUnquotedState() |
|
1132 | { |