diff options
author | sblondon <stephane.blondon@gmail.com> | 2021-11-09 08:25:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-09 08:25:37 +0100 |
commit | 961007bcadded9b15c2647e74fec2be4173205cb (patch) | |
tree | 0c88aa994ddba32fa17e54018dd61bc16a86b630 | |
parent | 643a356c535efd35753614b843e9562c3a73a135 (diff) | |
download | pygments-git-961007bcadded9b15c2647e74fec2be4173205cb.tar.gz |
Update debian control (#1946)
-rw-r--r-- | pygments/lexers/installers.py | 13 | ||||
-rw-r--r-- | tests/examplefiles/control/control | 39 | ||||
-rw-r--r-- | tests/examplefiles/control/control.output | 270 |
3 files changed, 318 insertions, 4 deletions
diff --git a/pygments/lexers/installers.py b/pygments/lexers/installers.py index ab333202..801c2931 100644 --- a/pygments/lexers/installers.py +++ b/pygments/lexers/installers.py @@ -267,6 +267,9 @@ class DebianControlLexer(RegexLexer): """ Lexer for Debian ``control`` files and ``apt-cache show <pkg>`` outputs. + Specification of `control`` files is available at + https://www.debian.org/doc/debian-policy/ch-controlfields.html + .. versionadded:: 0.9 """ name = 'Debian Control file' @@ -276,8 +279,9 @@ class DebianControlLexer(RegexLexer): tokens = { 'root': [ (r'^(Description)', Keyword, 'description'), - (r'^(Maintainer)(:\s*)', bygroups(Keyword, Text), 'maintainer'), - (r'^((Build-)?Depends)', Keyword, 'depends'), + (r'^(Maintainer|Uploaders)(:\s*)', bygroups(Keyword, Text), 'maintainer'), + (r'^((Build-|Pre-)?Depends(-Indep|-Arch)?)', Keyword, 'depends'), + (r'^(Recommends|Suggests|Enhances)', Keyword, 'depends'), (r'^((?:Python-)?Version)(:\s*)(\S+)$', bygroups(Keyword, Text, Number)), (r'^((?:Installed-)?Size)(:\s*)(\S+)$', @@ -288,10 +292,11 @@ class DebianControlLexer(RegexLexer): bygroups(Keyword, Whitespace, String)), ], 'maintainer': [ - (r'<[^>]+>', Generic.Strong), (r'<[^>]+>$', Generic.Strong, '#pop'), + (r'<[^>]+>', Generic.Strong), (r',\n?', Text), - (r'.', Text), + (r'[^,<]+$', Text, '#pop'), + (r'[^,<]+', Text), ], 'description': [ (r'(.*)(Homepage)(: )(\S+)', diff --git a/tests/examplefiles/control/control b/tests/examplefiles/control/control new file mode 100644 index 00000000..1751101e --- /dev/null +++ b/tests/examplefiles/control/control @@ -0,0 +1,39 @@ +Source: foo +Section: misc +Priority: optional +Maintainer: Debian Python Team <team+python@domain.tld> +Uploaders: Alice <alice@domain.tld> +Build-Depends: debhelper-compat (= 13), + dh-python, + otherbuilddependancies +Build-Depends-Indep: + p1 | p2 +Build-Depends-Arch: + p1 | p2 +Rules-Requires-Root: no +Standards-Version: 4.5.1 +Vcs-Git: https://salsa.domain.tld/python-team/packages/foo.git +Vcs-Browser: https://salsa.domain.tld/python-team/packages/foo +Homepage: https://domain.tld/owner/foo + +Package: foo +Architecture: all +Pre-Depends: + p1 | p2 +Depends: + python3-bar, + p1 | p2, + otherdependancies, + ${python3:Depends} +Provides: x-terminal-emulator +Recommends: + p1 | p2, + other-recommends +Suggests: + p1 | p2 +Enhances: + p1 | p2 +Description: title for this package + First paragraph describing the packaged software. + . + And a second paragraph too.
\ No newline at end of file diff --git a/tests/examplefiles/control/control.output b/tests/examplefiles/control/control.output new file mode 100644 index 00000000..9a839664 --- /dev/null +++ b/tests/examplefiles/control/control.output @@ -0,0 +1,270 @@ +'Source' Keyword +': ' Text.Whitespace +'foo' Literal.String +'\n' Text + +'Section' Keyword +': ' Text.Whitespace +'misc' Literal.String +'\n' Text + +'Priority' Keyword +': ' Text.Whitespace +'optional' Literal.String +'\n' Text + +'Maintainer' Keyword +': ' Text +'Debian Python Team ' Text +'<team+python@domain.tld>' Generic.Strong +'\n' Text + +'Uploaders' Keyword +': ' Text +'Alice ' Text +'<alice@domain.tld>' Generic.Strong +'\n' Text + +'Build-Depends' Keyword +': ' Text +'d' Name.Function +'e' Name.Function +'b' Name.Function +'h' Name.Function +'e' Name.Function +'l' Name.Function +'p' Name.Function +'e' Name.Function +'r' Name.Function +'-' Name.Function +'c' Name.Function +'o' Name.Function +'m' Name.Function +'p' Name.Function +'a' Name.Function +'t' Name.Function +' ' Text +'(' Text +'=' Operator +' ' Text +'13' Literal.Number +'),' Text +'\n ' Text +'d' Name.Function +'h' Name.Function +'-' Name.Function +'p' Name.Function +'y' Name.Function +'t' Name.Function +'h' Name.Function +'o' Name.Function +'n' Name.Function +',' Text +'\n ' Text +'o' Name.Function +'t' Name.Function +'h' Name.Function +'e' Name.Function +'r' Name.Function +'b' Name.Function +'u' Name.Function +'i' Name.Function +'l' Name.Function +'d' Name.Function +'d' Name.Function +'e' Name.Function +'p' Name.Function +'e' Name.Function +'n' Name.Function +'d' Name.Function +'a' Name.Function +'n' Name.Function +'c' Name.Function +'i' Name.Function +'e' Name.Function +'s' Name.Function +'\n' Text + +'Build-Depends-Indep' Keyword +':\n ' Text +'p' Name.Function +'1' Name.Function +' ' Text +'|' Operator +' ' Text +'p' Name.Function +'2' Name.Function +'\n' Text + +'Build-Depends-Arch' Keyword +':\n ' Text +'p' Name.Function +'1' Name.Function +' ' Text +'|' Operator +' ' Text +'p' Name.Function +'2' Name.Function +'\n' Text + +'Rules-Requires-Root' Keyword +': ' Text.Whitespace +'no' Literal.String +'\n' Text + +'Standards-Version' Keyword +': ' Text.Whitespace +'4.5.1' Literal.String +'\n' Text + +'Vcs-Git' Keyword +': ' Text.Whitespace +'https://salsa.domain.tld/python-team/packages/foo.git' Literal.String +'\n' Text + +'Vcs-Browser' Keyword +': ' Text.Whitespace +'https://salsa.domain.tld/python-team/packages/foo' Literal.String +'\n' Text + +'Homepage' Keyword +': ' Text.Whitespace +'https://domain.tld/owner/foo' Literal.String +'\n' Text + +'\n' Text + +'Package' Keyword +': ' Text.Whitespace +'foo' Literal.String +'\n' Text + +'Architecture' Keyword +': ' Text.Whitespace +'all' Literal.String +'\n' Text + +'Pre-Depends' Keyword +':\n ' Text +'p' Name.Function +'1' Name.Function +' ' Text +'|' Operator +' ' Text +'p' Name.Function +'2' Name.Function +'\n' Text + +'Depends' Keyword +':\n ' Text +'p' Name.Function +'y' Name.Function +'t' Name.Function +'h' Name.Function +'o' Name.Function +'n' Name.Function +'3' Name.Function +'-' Name.Function +'b' Name.Function +'a' Name.Function +'r' Name.Function +',' Text +'\n ' Text +'p' Name.Function +'1' Name.Function +' ' Text +'|' Operator +' ' Text +'p' Name.Function +'2' Name.Function +',' Text +'\n ' Text +'o' Name.Function +'t' Name.Function +'h' Name.Function +'e' Name.Function +'r' Name.Function +'d' Name.Function +'e' Name.Function +'p' Name.Function +'e' Name.Function +'n' Name.Function +'d' Name.Function +'a' Name.Function +'n' Name.Function +'c' Name.Function +'i' Name.Function +'e' Name.Function +'s' Name.Function +',' Text +'\n ' Text +'$' Operator +'{' Text +'python3:Depends' Name.Entity +'}' Text +'\n' Text + +'Provides' Keyword +': ' Text.Whitespace +'x-terminal-emulator' Literal.String +'\n' Text + +'Recommends' Keyword +':\n ' Text +'p' Name.Function +'1' Name.Function +' ' Text +'|' Operator +' ' Text +'p' Name.Function +'2' Name.Function +',' Text +'\n ' Text +'o' Name.Function +'t' Name.Function +'h' Name.Function +'e' Name.Function +'r' Name.Function +'-' Name.Function +'r' Name.Function +'e' Name.Function +'c' Name.Function +'o' Name.Function +'m' Name.Function +'m' Name.Function +'e' Name.Function +'n' Name.Function +'d' Name.Function +'s' Name.Function +'\n' Text + +'Suggests' Keyword +':\n ' Text +'p' Name.Function +'1' Name.Function +' ' Text +'|' Operator +' ' Text +'p' Name.Function +'2' Name.Function +'\n' Text + +'Enhances' Keyword +':\n ' Text +'p' Name.Function +'1' Name.Function +' ' Text +'|' Operator +' ' Text +'p' Name.Function +'2' Name.Function +'\n' Text + +'Description' Keyword +': title for this package\n' Generic.Strong + +' First paragraph describing the packaged software.\n' Text + +' .\n' Text + +' And a second paragraph too.\n' Text |