scratch – Blame information for rev 87

Subversion Repositories:
Rev:
Rev Author Line No. Line
87 office 1 <?php
2  
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11  
12 namespace Symfony\Component\CssSelector\Parser;
13  
14 /**
15 * CSS selector reader.
16 *
17 * This component is a port of the Python cssselect library,
18 * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
19 *
20 * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
21 *
22 * @internal
23 */
24 class Reader
25 {
26 /**
27 * @var string
28 */
29 private $source;
30  
31 /**
32 * @var int
33 */
34 private $length;
35  
36 /**
37 * @var int
38 */
39 private $position = 0;
40  
41 /**
42 * @param string $source
43 */
44 public function __construct($source)
45 {
46 $this->source = $source;
47 $this->length = strlen($source);
48 }
49  
50 /**
51 * @return bool
52 */
53 public function isEOF()
54 {
55 return $this->position >= $this->length;
56 }
57  
58 /**
59 * @return int
60 */
61 public function getPosition()
62 {
63 return $this->position;
64 }
65  
66 /**
67 * @return int
68 */
69 public function getRemainingLength()
70 {
71 return $this->length - $this->position;
72 }
73  
74 /**
75 * @param int $length
76 * @param int $offset
77 *
78 * @return string
79 */
80 public function getSubstring($length, $offset = 0)
81 {
82 return substr($this->source, $this->position + $offset, $length);
83 }
84  
85 /**
86 * @param string $string
87 *
88 * @return int
89 */
90 public function getOffset($string)
91 {
92 $position = strpos($this->source, $string, $this->position);
93  
94 return false === $position ? false : $position - $this->position;
95 }
96  
97 /**
98 * @param string $pattern
99 *
100 * @return bool
101 */
102 public function findPattern($pattern)
103 {
104 $source = substr($this->source, $this->position);
105  
106 if (preg_match($pattern, $source, $matches)) {
107 return $matches;
108 }
109  
110 return false;
111 }
112  
113 /**
114 * @param int $length
115 */
116 public function moveForward($length)
117 {
118 $this->position += $length;
119 }
120  
121 public function moveToEnd()
122 {
123 $this->position = $this->length;
124 }
125 }