summaryrefslogtreecommitdiff
path: root/src/HTML5/Parser/InputStream.php
blob: 713031d4a2b0f65da961eafdb8007665674c4a79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
namespace HTML5\Parser;

/**
 * Interface for stream readers.
 *
 * The parser only reads from streams. Various input sources can write 
 * an adapater to this InputStream.
 *
 * Currently provided InputStream implementations include 
 * FileInputStream and StringInputStream.
 */
interface InputStream extends \Iterator {

  /**
   * Returns the current line that is being consumed.
   *
   * TODO: Move this to the scanner.
   */
  public function currentLine();

  /**
   * Returns the current column of the current line that the tokenizer is at.
   *
   * Newlines are column 0. The first char after a newline is column 1.
   *
   * @TODO Move this to the scanner.
   *
   * @return int
   *   The column number.
   */
  public function columnOffset();

  /**
   * Get all characters until EOF.
   *
   * This consumes characters until the EOF.
   */
  public function remainingChars();

  /**
   * Read to a particular match (or until $max bytes are consumed).
   *
   * This operates on byte sequences, not characters.
   *
   * Matches as far as possible until we reach a certain set of bytes
   * and returns the matched substring.
   *
   * @see strcspn
   * @param string $bytes
   *   Bytes to match.
   * @param int $max
   *   Maximum number of bytes to scan.
   * @return mixed
   *   Index or FALSE if no match is found. You should use strong 
   *   equality when checking the result, since index could be 0.
   */
  public function charsUntil($bytes, $max = null);

  /**
   * Returns the string so long as $bytes matches.
   *
   * Matches as far as possible with a certain set of bytes
   * and returns the matched substring.
   *
   * @see strspn
   * @param string $bytes
   *   A mask of bytes to match. If ANY byte in this mask matches the 
   *   current char, the pointer advances and the char is part of the 
   *   substring.
   * @param int $max
   *   The max number of chars to read.
   */
  public function charsWhile($bytes, $max = null);

  /**
   * Unconsume one character.
   *
   * @param  int $howMany
   *   The number of characters to move the pointer back.
   */
  public function unconsume($howMany = 1);

  /**
   * Retrieve the next character without advancing the pointer.
   */
  public function peek();
}