summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsblondon <stephane.blondon@gmail.com>2021-11-09 08:25:37 +0100
committerGitHub <noreply@github.com>2021-11-09 08:25:37 +0100
commit961007bcadded9b15c2647e74fec2be4173205cb (patch)
tree0c88aa994ddba32fa17e54018dd61bc16a86b630
parent643a356c535efd35753614b843e9562c3a73a135 (diff)
downloadpygments-git-961007bcadded9b15c2647e74fec2be4173205cb.tar.gz
Update debian control (#1946)
-rw-r--r--pygments/lexers/installers.py13
-rw-r--r--tests/examplefiles/control/control39
-rw-r--r--tests/examplefiles/control/control.output270
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