X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/vendor/wikimedia/css-sanitizer/src/Grammar/DelimMatcher.php diff --git a/vendor/wikimedia/css-sanitizer/src/Grammar/DelimMatcher.php b/vendor/wikimedia/css-sanitizer/src/Grammar/DelimMatcher.php new file mode 100644 index 00000000..11061c86 --- /dev/null +++ b/vendor/wikimedia/css-sanitizer/src/Grammar/DelimMatcher.php @@ -0,0 +1,50 @@ +s, but will work for + * other types (case-sensitively) too. For the more common case-insensitive + * identifier matching, use KeywordMatcher. + * + * @see https://www.w3.org/TR/2016/CR-css-values-3-20160929/#component-types + */ +class DelimMatcher extends Matcher { + /** @var string One of the Token::T_* constants */ + protected $type; + + /** @var string[] Values to match */ + protected $values; + + /** + * @param string|string[] $values Token values to match + * @param array $options Options + * - type: (string) Token type to match. Default is Token::T_DELIM. + */ + public function __construct( $values, array $options = [] ) { + $options += [ + 'type' => Token::T_DELIM, + ]; + + $this->values = array_map( 'strval', (array)$values ); + $this->type = $options['type']; + } + + protected function generateMatches( ComponentValueList $values, $start, array $options ) { + $cv = isset( $values[$start] ) ? $values[$start] : null; + if ( $cv instanceof Token && $cv->type() === $this->type && + in_array( $cv->value(), $this->values, true ) + ) { + yield $this->makeMatch( $values, $start, $this->next( $values, $start, $options ) ); + } + } +}