Mercurial > hg > isophonics-drupal-site
diff vendor/theseer/tokenizer/src/TokenCollection.php @ 14:1fec387a4317
Update Drupal core to 8.5.2 via Composer
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:46:53 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/theseer/tokenizer/src/TokenCollection.php Mon Apr 23 09:46:53 2018 +0100 @@ -0,0 +1,128 @@ +<?php declare(strict_types = 1); +namespace TheSeer\Tokenizer; + +class TokenCollection implements \ArrayAccess, \Iterator, \Countable { + + /** + * @var Token[] + */ + private $tokens = []; + + /** + * @var int + */ + private $pos; + + /** + * @param Token $token + */ + public function addToken(Token $token) { + $this->tokens[] = $token; + } + + /** + * @return Token + */ + public function current(): Token { + return current($this->tokens); + } + + /** + * @return int + */ + public function key(): int { + return key($this->tokens); + } + + /** + * @return void + */ + public function next() { + next($this->tokens); + $this->pos++; + } + + /** + * @return bool + */ + public function valid(): bool { + return $this->count() > $this->pos; + } + + /** + * @return void + */ + public function rewind() { + reset($this->tokens); + $this->pos = 0; + } + + /** + * @return int + */ + public function count(): int { + return count($this->tokens); + } + + /** + * @param mixed $offset + * + * @return bool + */ + public function offsetExists($offset): bool { + return isset($this->tokens[$offset]); + } + + /** + * @param mixed $offset + * + * @return Token + * @throws TokenCollectionException + */ + public function offsetGet($offset): Token { + if (!$this->offsetExists($offset)) { + throw new TokenCollectionException( + sprintf('No Token at offest %s', $offset) + ); + } + + return $this->tokens[$offset]; + } + + /** + * @param mixed $offset + * @param Token $value + * + * @throws TokenCollectionException + */ + public function offsetSet($offset, $value) { + if (!is_int($offset)) { + $type = gettype($offset); + throw new TokenCollectionException( + sprintf( + 'Offset must be of type integer, %s given', + $type === 'object' ? get_class($value) : $type + ) + ); + } + if (!$value instanceof Token) { + $type = gettype($value); + throw new TokenCollectionException( + sprintf( + 'Value must be of type %s, %s given', + Token::class, + $type === 'object' ? get_class($value) : $type + ) + ); + } + $this->tokens[$offset] = $value; + } + + /** + * @param mixed $offset + */ + public function offsetUnset($offset) { + unset($this->tokens[$offset]); + } + +}