This file is indexed.

/usr/lib/python2.7/dist-packages/cssutils/cssproductions.py is in python-cssutils 1.0-4.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
"""productions for cssutils based on a mix of CSS 2.1 and CSS 3 Syntax
productions

- http://www.w3.org/TR/css3-syntax
- http://www.w3.org/TR/css3-syntax/#grammar0

open issues
    - numbers contain "-" if present
    - HASH: #aaa is, #000 is not anymore,
            CSS2.1: 'nmchar': r'[_a-z0-9-]|{nonascii}|{escape}',
            CSS3: 'nmchar': r'[_a-z-]|{nonascii}|{escape}',
"""
__all__ = ['CSSProductions', 'MACROS', 'PRODUCTIONS']
__docformat__ = 'restructuredtext'
__version__ = '$Id$'

# a complete list of css3 macros
MACROS = {
    'nonascii': r'[^\0-\177]',
    'unicode': r'\\[0-9A-Fa-f]{1,6}(?:{nl}|{s})?',
    #'escape': r'{unicode}|\\[ -~\200-\777]',
    'escape': r'{unicode}|\\[^\n\r\f0-9a-f]',
    'nmstart': r'[_a-zA-Z]|{nonascii}|{escape}',
    'nmchar': r'[-_a-zA-Z0-9]|{nonascii}|{escape}',
    'string1': r'"([^\n\r\f\\"]|\\{nl}|{escape})*"',
    'string2': r"'([^\n\r\f\\']|\\{nl}|{escape})*'",
    'invalid1': r'\"([^\n\r\f\\"]|\\{nl}|{escape})*',
    'invalid2': r"\'([^\n\r\f\\']|\\{nl}|{escape})*",

    'comment': r'\/\*[^*]*\*+([^/][^*]*\*+)*\/',
    'ident': r'[-]?{nmstart}{nmchar}*',
    'name': r'{nmchar}+',
    # TODO???
    'num': r'[+-]?[0-9]*\.[0-9]+|[+-]?[0-9]+', #r'[-]?\d+|[-]?\d*\.\d+',
    'string': r'{string1}|{string2}',
    # from CSS2.1
    'invalid': r'{invalid1}|{invalid2}',
    'url':  r'[\x09\x21\x23-\x26\x28\x2a-\x7E]|{nonascii}|{escape}',

    's': r'\t|\r|\n|\f|\x20',
    'w': r'{s}*',
    'nl': r'\n|\r\n|\r|\f',

    'A': r'A|a|\\0{0,4}(?:41|61)(?:\r\n|[ \t\r\n\f])?',
    'B': r'B|b|\\0{0,4}(?:42|62)(?:\r\n|[ \t\r\n\f])?',
    'C': r'C|c|\\0{0,4}(?:43|63)(?:\r\n|[ \t\r\n\f])?',
    'D': r'D|d|\\0{0,4}(?:44|64)(?:\r\n|[ \t\r\n\f])?',
    'E': r'E|e|\\0{0,4}(?:45|65)(?:\r\n|[ \t\r\n\f])?',
    'F': r'F|f|\\0{0,4}(?:46|66)(?:\r\n|[ \t\r\n\f])?',
    'G': r'G|g|\\0{0,4}(?:47|67)(?:\r\n|[ \t\r\n\f])?|\\G|\\g',
    'H': r'H|h|\\0{0,4}(?:48|68)(?:\r\n|[ \t\r\n\f])?|\\H|\\h',
    'I': r'I|i|\\0{0,4}(?:49|69)(?:\r\n|[ \t\r\n\f])?|\\I|\\i',
    'K': r'K|k|\\0{0,4}(?:4b|6b)(?:\r\n|[ \t\r\n\f])?|\\K|\\k',
    'L': r'L|l|\\0{0,4}(?:4c|6c)(?:\r\n|[ \t\r\n\f])?|\\L|\\l',
    'M': r'M|m|\\0{0,4}(?:4d|6d)(?:\r\n|[ \t\r\n\f])?|\\M|\\m',
    'N': r'N|n|\\0{0,4}(?:4e|6e)(?:\r\n|[ \t\r\n\f])?|\\N|\\n',
    'O': r'O|o|\\0{0,4}(?:4f|6f)(?:\r\n|[ \t\r\n\f])?|\\O|\\o',
    'P': r'P|p|\\0{0,4}(?:50|70)(?:\r\n|[ \t\r\n\f])?|\\P|\\p',
    'R': r'R|r|\\0{0,4}(?:52|72)(?:\r\n|[ \t\r\n\f])?|\\R|\\r',
    'S': r'S|s|\\0{0,4}(?:53|73)(?:\r\n|[ \t\r\n\f])?|\\S|\\s',
    'T': r'T|t|\\0{0,4}(?:54|74)(?:\r\n|[ \t\r\n\f])?|\\T|\\t',
    'U': r'U|u|\\0{0,4}(?:55|75)(?:\r\n|[ \t\r\n\f])?|\\U|\\u',
    'V': r'V|v|\\0{0,4}(?:56|76)(?:\r\n|[ \t\r\n\f])?|\\V|\\v',
    'X': r'X|x|\\0{0,4}(?:58|78)(?:\r\n|[ \t\r\n\f])?|\\X|\\x',
    'Z': r'Z|z|\\0{0,4}(?:5a|7a)(?:\r\n|[ \t\r\n\f])?|\\Z|\\z',
    }

# The following productions are the complete list of tokens
# used by cssutils, a mix of CSS3 and some CSS2.1 productions.
# The productions are **ordered**:
PRODUCTIONS = [
    # UTF8_BOM or UTF8_BOM_SIG will only be checked at beginning of CSS
    ('BOM', '\xfe\xff|\xef\xbb\xbf'),

    ('S', r'{s}+'), # 1st in list of general productions
    ('URI', r'{U}{R}{L}\({w}({string}|{url}*){w}\)'),
    ('IDENT', r'{A}{N}{D}'),
    ('FUNCTION', r'{ident}\('),
    ('UNICODE-RANGE', r'{U}\+[0-9A-Fa-f?]{1,6}(\-[0-9A-Fa-f]{1,6})?'),
    ('IDENT', r'{ident}'),
    ('DIMENSION', r'{num}{ident}'),
    ('PERCENTAGE', r'{num}\%'),
    ('NUMBER', r'{num}'),
    ('HASH', r'\#{name}'),
    ('COMMENT', r'{comment}'), #r'\/\*[^*]*\*+([^/][^*]*\*+)*\/'),
    ('STRING', r'{string}'),
    ('INVALID', r'{invalid}'), # from CSS2.1
    ('ATKEYWORD', r'@{ident}'), # other keywords are done in the tokenizer
    ('INCLUDES', '\~\='),
    ('DASHMATCH', r'\|\='),
    ('PREFIXMATCH', r'\^\='),
    ('SUFFIXMATCH', r'\$\='),
    ('SUBSTRINGMATCH', r'\*\='),
    ('CDO', r'\<\!\-\-'),
    ('CDC', r'\-\-\>'),
    ('CHAR', r'[^"\']') # MUST always be last
    # valid ony at start so not checked everytime
    #('CHARSET_SYM', r'@charset '), # from Errata includes ending space!
    # checked specially if fullsheet is parsed
    ]



class CSSProductions(object):
    """
    most attributes are set later
    """
    EOF = True
    # removed from productions as they simply are ATKEYWORD until
    # tokenizing
    CHARSET_SYM = u'CHARSET_SYM'
    FONT_FACE_SYM = u'FONT_FACE_SYM'
    MEDIA_SYM = u'MEDIA_SYM'
    IMPORT_SYM = u'IMPORT_SYM'
    NAMESPACE_SYM = u'NAMESPACE_SYM'
    PAGE_SYM = u'PAGE_SYM'
    VARIABLES_SYM = u'VARIABLES_SYM'

for i, t in enumerate(PRODUCTIONS):
    setattr(CSSProductions, t[0].replace('-', '_'), t[0])


# may be enabled by settings.set
_DXImageTransform = (u'FUNCTION',
                     ur'progid\:DXImageTransform\.Microsoft\..+\('
                     )