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