Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3namespace Wikimedia\RemexHtml\Tokenizer;
4
5/**
6 * This is the interface for handlers receiving events from the Tokenizer.
7 * All events which consume characters give a source offset and length,
8 * allowing for input stream patching. The offset and length are relative to
9 * the preprocessed input, see Tokenizer::getPreprocessd
10 */
11interface TokenHandler {
12    /**
13     * Called once at the start of the document (STATE_START)
14     *
15     * @param Tokenizer $tokenizer The Tokenizer which generated the event
16     * @param string|null $fragmentNamespace The fragment namespace, or null
17     *   to run in document mode.
18     * @param string|null $fragmentName The fragment tag name, or null to run
19     *   in document mode.
20     */
21    public function startDocument( Tokenizer $tokenizer, $fragmentNamespace, $fragmentName );
22
23    /**
24     * Called when the end of the input string is consumed
25     * @param int $pos The input position (past the end)
26     */
27    public function endDocument( $pos );
28
29    /**
30     * This is called for "parse errors" (as defined by the spec). The spec
31     * does not define names for error messages, so we just use some English
32     * text for now. The imagined audience is a developer reading validator
33     * output.
34     *
35     * @param string $text The error message
36     * @param int $pos The input position
37     */
38    public function error( $text, $pos );
39
40    /**
41     * A merged sequence of character tokens. We use the SAX-like convention of
42     * requiring the handler to do the substring operation, i.e. the actual
43     * text is substr( $text, $start, $length ), since this allows us to avoid
44     * some copying, at least if ignoreCharRefs and ignoreNulls are enabled.
45     *
46     * @param string $text The string which contains the emitted characters
47     * @param int $start The start of the range within $text to use
48     * @param int $length The length of the range within $text to use
49     * @param int $sourceStart The input position
50     * @param int $sourceLength The input length
51     */
52    public function characters( $text, $start, $length, $sourceStart, $sourceLength );
53
54    /**
55     * A start tag event. We call it a tag rather than an element since the
56     * start/end events are not balanced, so the relationship between tags
57     * and elements is complex. Errors emitted by attribute parsing will be
58     * not be received until $attrs is accessed by the handler.
59     *
60     * @param string $name The tag name
61     * @param Attributes $attrs The tag attributes
62     * @param bool $selfClose Whether there is a self-closing slash
63     * @param int $sourceStart The input position
64     * @param int $sourceLength The input length
65     */
66    public function startTag( $name, Attributes $attrs, $selfClose, $sourceStart, $sourceLength );
67
68    /**
69     * An end tag event.
70     *
71     * @param string $name The tag name
72     * @param int $sourceStart The input position
73     * @param int $sourceLength The input length
74     */
75    public function endTag( $name, $sourceStart, $sourceLength );
76
77    /**
78     * A DOCTYPE declaration
79     *
80     * @param string|null $name The DOCTYPE name, or null if none was found
81     * @param string|null $public The public identifier, or null if none was found
82     * @param string|null $system The system identifier, or null if none was found
83     * @param bool $quirks What the spec calls the "force-quirks flag"
84     * @param int $sourceStart The input position
85     * @param int $sourceLength The input length
86     */
87    public function doctype( $name, $public, $system, $quirks, $sourceStart, $sourceLength );
88
89    /**
90     * A comment.
91     *
92     * @param string $text The inner text of the comment
93     * @param int $sourceStart The input position
94     * @param int $sourceLength The input length
95     */
96    public function comment( $text, $sourceStart, $sourceLength );
97}