diff options
| author | Bryton Hall <email@bryton.io> | 2019-01-03 18:39:56 -0500 |
|---|---|---|
| committer | Georg Brandl <georg@python.org> | 2019-11-27 07:08:09 +0100 |
| commit | ac037db8115485ee9f17a848e496c98bcc58cf0e (patch) | |
| tree | 658cc22d6faafd9d081ca7d86d5ab2f1c5843c51 /pygments | |
| parent | b45777fd2713bc3c6b80680168563afa5c96b46d (diff) | |
| download | pygments-git-793/brytonhall/singularity.tar.gz | |
add Singularity lexer793/brytonhall/singularity
Diffstat (limited to 'pygments')
| -rw-r--r-- | pygments/lexers/_mapping.py | 1 | ||||
| -rw-r--r-- | pygments/lexers/configs.py | 37 |
2 files changed, 36 insertions, 2 deletions
diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py index acb71ad9..b5a7938b 100644 --- a/pygments/lexers/_mapping.py +++ b/pygments/lexers/_mapping.py @@ -396,6 +396,7 @@ LEXERS = { 'ShExCLexer': ('pygments.lexers.rdf', 'ShExC', ('shexc', 'shex'), ('*.shex',), ('text/shex',)), 'ShenLexer': ('pygments.lexers.lisp', 'Shen', ('shen',), ('*.shen',), ('text/x-shen', 'application/x-shen')), 'SilverLexer': ('pygments.lexers.verification', 'Silver', ('silver',), ('*.sil', '*.vpr'), ()), + 'SingularityLexer': ('pygments.lexers.configs', 'Singularity', ('singularity',), ('*.def', 'Singularity'), ()), 'SlashLexer': ('pygments.lexers.slash', 'Slash', ('slash',), ('*.sl',), ()), 'SlimLexer': ('pygments.lexers.webmisc', 'Slim', ('slim',), ('*.slim',), ('text/x-slim',)), 'SlurmBashLexer': ('pygments.lexers.shell', 'Slurm', ('slurm', 'sbatch'), ('*.sl',), ()), diff --git a/pygments/lexers/configs.py b/pygments/lexers/configs.py index a18285af..b719e30a 100644 --- a/pygments/lexers/configs.py +++ b/pygments/lexers/configs.py @@ -13,7 +13,7 @@ import re from pygments.lexer import RegexLexer, default, words, bygroups, include, using from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ - Number, Punctuation, Whitespace, Literal + Number, Punctuation, Whitespace, Literal, Generic from pygments.lexers.shell import BashLexer from pygments.lexers.data import JsonLexer @@ -21,7 +21,8 @@ __all__ = ['IniLexer', 'RegeditLexer', 'PropertiesLexer', 'KconfigLexer', 'Cfengine3Lexer', 'ApacheConfLexer', 'SquidConfLexer', 'NginxConfLexer', 'LighttpdConfLexer', 'DockerLexer', 'TerraformLexer', 'TermcapLexer', 'TerminfoLexer', - 'PkgConfigLexer', 'PacmanConfLexer', 'AugeasLexer', 'TOMLLexer'] + 'PkgConfigLexer', 'PacmanConfLexer', 'AugeasLexer', 'TOMLLexer', + 'SingularityLexer'] class IniLexer(RegexLexer): @@ -934,3 +935,35 @@ class TOMLLexer(RegexLexer): ] } + + +class SingularityLexer(RegexLexer): + """ + Lexer for `Singularity definition files + <https://www.sylabs.io/guides/3.0/user-guide/definition_files.html>`_. + + .. versionadded:: 2.6 + """ + + name = 'Singularity' + aliases = ['singularity'] + filenames = ['*.def', 'Singularity'] + flags = re.IGNORECASE | re.MULTILINE | re.DOTALL + + _headers = r'^(\s)*(bootstrap|from|osversion|mirrorurl|include|registry|namespace|includecmd)(:)' + _section = r'^%(?:pre|post|setup|environment|help|labels|test|runscript|files|startscript)\b' + _appsect = r'^%app(?:install|help|run|labels|env|test|files)\b' + + tokens = { + 'root': [ + (_section, Generic.Heading, 'script'), + (_appsect, Generic.Heading, 'script'), + (_headers, bygroups(Text, Keyword, Text)), + (r'\s*#.*?\n', Comment), + (r'\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))\b', Number), + (r'(?!^\s*%).', Text), + ], + 'script': [ + (r'(.+?(?=^\s*%))|(.*)', using(BashLexer), '#pop'), + ], + } |
