/** * constructor */ public function __construct($src = null) { parent::__construct($src); $this->addFilter('map-ident', 'IDENT', array($this, 'mapIdentifierFilter')); $this->addFilter('comment-note', 'COMMENT', array('Luminous\\Core\\Filters', 'commentNote')); $this->addFilter('comment-to-doc', 'COMMENT', array('Luminous\\Core\\Filters', 'genericDocComment')); $this->addFilter('string-escape', 'STRING', array('Luminous\\Core\\Filters', 'string')); $this->addFilter('char-escape', 'CHARACTER', array('Luminous\\Core\\Filters', 'string')); $this->addFilter('pcre', 'REGEX', array('Luminous\\Core\\Filters', 'pcre')); $this->addFilter('user-defs', 'IDENT', array($this, 'userDefFilter')); $this->addFilter('constant', 'IDENT', array('Luminous\\Core\\Filters', 'upperToConstant')); $this->addFilter('clean-ident', 'IDENT', array('Luminous\\Core\\Filters', 'cleanIdent')); $this->addStreamFilter('rule-map', array($this, 'ruleMapperFilter')); $this->addStreamFilter('oo-syntax', array('Luminous\\Core\\Filters', 'ooStreamFilter')); }
assert($out === array(0 => 6, 1 => array(0 => '45'))); $s->posShift(3); $out = $s->getNext(array('/\\d+/', '/\\s+/')); assert($out === array(0 => -1, 1 => null)); $s->reset(); $out = $s->getNextStrpos(array('1', ';')); assert($out === array(0 => 1, 1 => '1')); $s->posShift(2); $out = $s->getNextStrpos(array('1', ';')); assert($out === array(0 => 5, 1 => ';')); $s->pos(6); $out = $s->getNextStrpos(array('1', ';')); assert($out === array(-1, null)); $s->reset(); $s->string('0123'); $rules = array('one' => '/1/', 'zero' => '/0/', 'digit' => '/\\d+/'); $out = $s->getNextNamed($rules); assert($out === array('zero', 0, array('0'))); $s->posShift(1); $out = $s->getNextNamed($rules); assert($out === array('one', 1, array('1'))); $s->posShift(1); $out = $s->getNextNamed($rules); assert($out === array('digit', 2, array('23'))); // rest() had a problem being independent on two scanners $s2 = new StringScanner('123'); $s3 = new StringScanner('456'); assert($s2->rest() === '123'); assert($s3->rest() === '456'); assert($s2->rest() === $s2->string()); assert($s3->rest() === $s3->string());