TextMate-style syntax highlighting in PHP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.0 KiB

3 years ago
<?php
/** @license MIT
* Copyright 2021 Dustin Wilson et al.
* See LICENSE and AUTHORS files for details */
declare(strict_types=1);
namespace dW\Highlighter\Scope;
class Data {
protected string $data;
protected int $position = 0;
3 years ago
protected int $endPosition;
public function __construct(string $data) {
preg_match('/[LRB]:|[A-Za-z0-9-+_\*\.]+|[\,\|\-\(\)]/', $data, $matches);
$this->data = $matches[0] ?? [];
$this->endPosition = count($this->data);
3 years ago
}
public function consume(): string|bool {
if ($this->position === $this->endPosition) {
3 years ago
return false;
}
return $this->data[$this->position++];
3 years ago
}
public function peek(): string|bool {
if ($this->position === $this->endPosition) {
3 years ago
return false;
}
return $this->data[$this->position + 1];
3 years ago
}
public function unconsume(): bool {
if ($this->position < 0) {
return false;
}
$this->position--;
return true;
}
3 years ago
}