aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Pygments/py3/pygments/lexers/srcinfo.py
blob: abba0c3dc0b2af3c5081c7f89d925dcdadae91c9 (plain) (blame)
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
"""
    pygments.lexers.srcinfo
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for .SRCINFO files used by Arch Linux Packages.

    The description of the format can be found in the wiki:
    https://wiki.archlinux.org/title/.SRCINFO

    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
"""

from pygments.lexer import RegexLexer, words
from pygments.token import Text, Comment, Keyword, Name, Operator, Whitespace

__all__ = ['SrcinfoLexer']

keywords = (
    'pkgbase', 'pkgname',
    'pkgver', 'pkgrel', 'epoch',
    'pkgdesc', 'url', 'install', 'changelog',
    'arch', 'groups', 'license', 'noextract', 'options', 'backup',
    'validpgpkeys',
)

architecture_dependent_keywords = (
    'source', 'depends', 'checkdepends', 'makedepends', 'optdepends',
    'provides', 'conflicts', 'replaces',
    'md5sums', 'sha1sums', 'sha224sums', 'sha256sums', 'sha384sums',
    'sha512sums',
)


class SrcinfoLexer(RegexLexer):
    """Lexer for .SRCINFO files used by Arch Linux Packages.
    """

    name = 'Srcinfo'
    aliases = ['srcinfo']
    filenames = ['.SRCINFO']
    url = 'https://wiki.archlinux.org/title/.SRCINFO'
    version_added = '2.11'

    tokens = {
        'root': [
            (r'\s+', Whitespace),
            (r'#.*', Comment.Single),
            (words(keywords), Keyword, 'assignment'),
            (words(architecture_dependent_keywords, suffix=r'_\w+'),
             Keyword, 'assignment'),
            (r'\w+', Name.Variable, 'assignment'),
        ],
        'assignment': [
            (r' +', Whitespace),
            (r'=', Operator, 'value'),
        ],
        'value': [
            (r' +', Whitespace),
            (r'.*', Text, '#pop:2'),
        ],
    }