xref: /plugin/combo/vendor/carica/phpcss/src/PhpCss/Scanner/Patterns.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau/**
3*04fd306cSNickeau* An abstract class providing token regex pattern for repeated usage.
4*04fd306cSNickeau*
5*04fd306cSNickeau* @license http://www.opensource.org/licenses/mit-license.php The MIT License
6*04fd306cSNickeau* @copyright Copyright 2010-2014 PhpCss Team
7*04fd306cSNickeau*/
8*04fd306cSNickeau
9*04fd306cSNickeaunamespace PhpCss\Scanner {
10*04fd306cSNickeau  /**
11*04fd306cSNickeau  * An abstract class providing token regex pattern for repeated usage.
12*04fd306cSNickeau  */
13*04fd306cSNickeau  abstract class Patterns {
14*04fd306cSNickeau
15*04fd306cSNickeau    public const WHITESPACE = '([\r\n\t ]+)S';
16*04fd306cSNickeau    public const NUMBER = '(-?[\d]+)S';
17*04fd306cSNickeau    public const IDENTIFIER = '(
18*04fd306cSNickeau      (
19*04fd306cSNickeau        ( # namespace ncname
20*04fd306cSNickeau          [A-Z_a-z\\x{C0}-\\x{D6}\\x{D8}-\\x{F6}\\x{F8}-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]
21*04fd306cSNickeau          [-A-Z_a-z0-9\\x{C0}-\\x{D6}\\x{D8}-\\x{F6}\\x{F8}-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}\\x{B7}\\x{300}-\\x{36F}\\x{203F}-\\x{2040}]*
22*04fd306cSNickeau        |
23*04fd306cSNickeau          \\* # the * is a joker for any namespace
24*04fd306cSNickeau        )
25*04fd306cSNickeau      \\| # a pipe separates namespace from element
26*04fd306cSNickeau      )?
27*04fd306cSNickeau      ( # element ncname
28*04fd306cSNickeau        [A-Z_a-z\\x{C0}-\\x{D6}\\x{D8}-\\x{F6}\\x{F8}-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]
29*04fd306cSNickeau        [-A-Z_a-z0-9\\x{C0}-\\x{D6}\\x{D8}-\\x{F6}\\x{F8}-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}\\x{B7}\\x{300}-\\x{36F}\\x{203F}-\\x{2040}]*
30*04fd306cSNickeau      |
31*04fd306cSNickeau        \\* # the * is a joker for any element
32*04fd306cSNickeau      )
33*04fd306cSNickeau    )uxS';
34*04fd306cSNickeau
35*04fd306cSNickeau    public const COMBINATOR = '(\s*[>+~]\s*)S';
36*04fd306cSNickeau
37*04fd306cSNickeau    public const CLASS_SELECTOR = '(\.[^\r\n\t >+~.,#:()[\\]\\\'"]+)S';
38*04fd306cSNickeau    public const ID_SELECTOR = '(#[^\r\n\t >+~.,#:()[\\]\\\'"]+)S';
39*04fd306cSNickeau    public const PSEUDO_CLASS = '(:[^\r\n\t >+~.,#:()[\\]\\\'"]+)S';
40*04fd306cSNickeau    public const PSEUDO_ELEMENT = '(::[^\r\n\t .,#:()[\\]\\\'"]+)S';
41*04fd306cSNickeau
42*04fd306cSNickeau    public const ATTRIBUTE_OPERATOR = '([~^$*|]?=)S';
43*04fd306cSNickeau    public const PSEUDO_CLASS_POSITION = '(\s*(([-+]?(\\d+)?n\\s*[-+]\\s*\\d+)|\\d+n)\s*)';
44*04fd306cSNickeau  }
45*04fd306cSNickeau}
46