diff --git a/lib/Data.php b/lib/Data.php index be17138..2beb496 100644 --- a/lib/Data.php +++ b/lib/Data.php @@ -79,16 +79,6 @@ class Data { $this->eof = true; } - if (self::$debug) { - echo "\nConsume\n==========\n"; - echo "Length: $length\n"; - echo "Data: "; - var_export($string); - echo "\n"; - echo "Pointer: {$this->data->posChar()}\n"; - echo "==========\n\n"; - } - return $string; } @@ -111,12 +101,6 @@ class Data { $this->_column -= $length; } } - - if (self::$debug) { - echo "\nUnconsume\n==========\n"; - echo "Pointer: {$this->data->posChar()}\n"; - echo "==========\n\n"; - } } public function consumeWhile(string $match, int $limit = 0): string { @@ -132,15 +116,6 @@ class Data { $string = $this->data->peekChar($length); - if (self::$debug) { - echo "\nPeek\n==========\n"; - echo "Data: "; - var_export($string); - echo "\n"; - echo "Pointer: {$this->data->posChar()}\n"; - echo "==========\n\n"; - } - return $string; } @@ -204,16 +179,6 @@ class Data { $this->data->seek(($advancePointer) ? -1 : 0 - $count - 2); } - if (self::$debug) { - echo ($advancePointer) ? "\nconsume" : "\npeek"; - echo ($while) ? 'While' : 'Until'; - echo "\n==========\nPattern: "; - var_export(str_replace(["\t", "\n", "\x0c", "\x0d"], ['\t', '\n', '\x0c', '\x0d'], implode('', $match))); - echo "\nData: "; - var_export($string); - echo "\nPointer: {$this->data->posChar()}\n==========\n\n"; - } - return $string; } diff --git a/lib/ParseErrorEmitter.php b/lib/ParseErrorEmitter.php index 1b97d8b..b61dd03 100644 --- a/lib/ParseErrorEmitter.php +++ b/lib/ParseErrorEmitter.php @@ -8,14 +8,8 @@ trait ParseErrorEmitter { private function error(int $code, ...$arg): bool { $data = ($this instanceof Data) ? $this : ($this->data ?? null); - if ($this->errorHandler) { - if ($data) { - return $this->errorHandler->emit($data->filePath, $data->line, $data->column, $code, ...$arg); - } else { - throw new \Exception("Emitted parse error without data stream"); - } - } else { - throw new \Exception("Emitted error without error handler"); - } + assert($data instanceof Data); + assert($this->errorHandler instanceof ParseError); + return $this->errorHandler->emit($data->filePath, $data->line, $data->column, $code, ...$arg); } } diff --git a/lib/Tokenizer.php b/lib/Tokenizer.php index 515d810..0daab53 100644 --- a/lib/Tokenizer.php +++ b/lib/Tokenizer.php @@ -997,7 +997,8 @@ class Tokenizer { } # Anything else else { - # Switch to the script data state. Reconsume the current input character. + # Switch to the script data state. + # Reconsume the current input character. $this->state = self::SCRIPT_DATA_STATE; $this->data->unconsume(); } @@ -3389,7 +3390,7 @@ class Tokenizer { # Not a valid state, unimplemented, or implemented elsewhere else { - throw new \Exception("Unimplemented state: ".(self::STATE_NAMES[$this->state] ?? $this->state)); + throw new \Exception("Unimplemented state: ".(self::STATE_NAMES[$this->state] ?? $this->state)); // @codeCoverageIgnore } } } @@ -3635,7 +3636,7 @@ class Tokenizer { // OPTIMIZATION: Combine all digit types // NOTE: This branch should never be reached - $charRefCode = ($charRefCode * 16) + hexdec($char); + $charRefCode = ($charRefCode * 16) + hexdec($char); // @codeCoverageIgnore } # U+003B SEMICOLON elseif ($char === ';') { @@ -3665,7 +3666,7 @@ class Tokenizer { // OPTIMIZATION: Combine all digit types // NOTE: This branch should never be reached - $charRefCode = ($charRefCode * 10) + ((int) ($char)); + $charRefCode = ($charRefCode * 10) + ((int) ($char)); // @codeCoverageIgnore } # U+003B SEMICOLON elseif ($char === ';') { @@ -3728,7 +3729,7 @@ class Tokenizer { # Not a valid state, unimplemented, or implemented elsewhere else { - throw new \Exception("Unimplemented character reference consumption state: ".(self::STATE_NAMES[$this->state] ?? $this->state)); + throw new \Exception("Unimplemented character reference consumption state: ".(self::STATE_NAMES[$this->state] ?? $this->state)); // @codeCoverageIgnore } } } diff --git a/tests/cases/TestTokenizer.php b/tests/cases/TestTokenizer.php index ba7d0ba..26dea15 100644 --- a/tests/cases/TestTokenizer.php +++ b/tests/cases/TestTokenizer.php @@ -8,7 +8,16 @@ use dW\HTML5\OpenElementsStack; use dW\HTML5\ParseError; use dW\HTML5\Tokenizer; -/** @covers \dW\HTML5\Tokenizer */ +/** + * @covers \dW\HTML5\Tokenizer + * @covers \dW\HTML5\Data + * @covers \dW\HTML5\CharacterToken + * @covers \dW\HTML5\CommentToken + * @covers \dW\HTML5\DataToken + * @covers \dW\HTML5\TagToken + * @covers \dW\HTML5\DOCTYPEToken + * @covers \dW\HTML5\TokenAttr + */ class TestTokenizer extends \dW\HTML5\Test\StandardTest { const DEBUG = false;