summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Hatch <tim@timhatch.com>2014-06-04 16:11:02 -0700
committerTim Hatch <tim@timhatch.com>2014-06-04 16:11:02 -0700
commitfa154d6c41ab291e63371399e9f5b48cf9b6a69a (patch)
treea96e88968eac4244a40965db6f70311435dcb695
parentcd003d73b5ef77b8b00ccd240af64b724b12e1db (diff)
parenta8fa6daa37b247251dde54e40f8d8feb863eddfe (diff)
downloadpygments-fa154d6c41ab291e63371399e9f5b48cf9b6a69a.tar.gz
Merged in malept/pygments/yaml+jinja-lexer (pull request #365)
Add YAML+Jinja lexer
-rw-r--r--pygments/lexers/_mapping.py1
-rw-r--r--pygments/lexers/templates.py22
-rw-r--r--tests/examplefiles/example.sls51
3 files changed, 73 insertions, 1 deletions
diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py
index 505baf2c..70159bdb 100644
--- a/pygments/lexers/_mapping.py
+++ b/pygments/lexers/_mapping.py
@@ -352,6 +352,7 @@ LEXERS = {
'XmlSmartyLexer': ('pygments.lexers.templates', 'XML+Smarty', ('xml+smarty',), (), ('application/xml+smarty',)),
'XsltLexer': ('pygments.lexers.web', 'XSLT', ('xslt',), ('*.xsl', '*.xslt', '*.xpl'), ('application/xsl+xml', 'application/xslt+xml')),
'XtendLexer': ('pygments.lexers.jvm', 'Xtend', ('xtend',), ('*.xtend',), ('text/x-xtend',)),
+ 'YamlJinjaLexer': ('pygments.lexers.templates', 'YAML+Jinja', ('yaml+jinja', 'salt', 'sls'), ('*.sls',), ('text/x-yaml+jinja', 'text/x-sls')),
'YamlLexer': ('pygments.lexers.text', 'YAML', ('yaml',), ('*.yaml', '*.yml'), ('text/x-yaml',)),
'ZephirLexer': ('pygments.lexers.web', 'Zephir', ('zephir',), ('*.zep',), ()),
}
diff --git a/pygments/lexers/templates.py b/pygments/lexers/templates.py
index f1f879a5..50579c61 100644
--- a/pygments/lexers/templates.py
+++ b/pygments/lexers/templates.py
@@ -16,6 +16,7 @@ from pygments.lexers.web import \
from pygments.lexers.agile import PythonLexer, PerlLexer
from pygments.lexers.compiled import JavaLexer
from pygments.lexers.jvm import TeaLangLexer
+from pygments.lexers.text import YamlLexer
from pygments.lexer import Lexer, DelegatingLexer, RegexLexer, bygroups, \
include, using, this, default
from pygments.token import Error, Punctuation, \
@@ -40,7 +41,7 @@ __all__ = ['HtmlPhpLexer', 'XmlPhpLexer', 'CssPhpLexer',
'VelocityHtmlLexer', 'VelocityXmlLexer', 'SspLexer',
'TeaTemplateLexer', 'LassoHtmlLexer', 'LassoXmlLexer',
'LassoCssLexer', 'LassoJavascriptLexer', 'HandlebarsLexer',
- 'HandlebarsHtmlLexer']
+ 'HandlebarsHtmlLexer', 'YamlJinjaLexer']
class ErbLexer(Lexer):
@@ -1831,3 +1832,22 @@ class HandlebarsHtmlLexer(DelegatingLexer):
def __init__(self, **options):
super(HandlebarsHtmlLexer, self).__init__(HtmlLexer, HandlebarsLexer, **options)
+
+
+class YamlJinjaLexer(DelegatingLexer):
+ """
+ Subclass of the `DjangoLexer` that highighlights unlexed data with the
+ `YamlLexer`.
+
+ Commonly used in Saltstack salt states.
+
+ .. versionadded:: 2.0
+ """
+
+ name = 'YAML+Jinja'
+ aliases = ['yaml+jinja', 'salt', 'sls']
+ filenames = ['*.sls']
+ mimetypes = ['text/x-yaml+jinja', 'text/x-sls']
+
+ def __init__(self, **options):
+ super(YamlJinjaLexer, self).__init__(YamlLexer, DjangoLexer, **options)
diff --git a/tests/examplefiles/example.sls b/tests/examplefiles/example.sls
new file mode 100644
index 00000000..824700e7
--- /dev/null
+++ b/tests/examplefiles/example.sls
@@ -0,0 +1,51 @@
+include:
+ - moosefs
+
+{% for mnt in salt['cmd.run']('ls /dev/data/moose*').split() %}
+/mnt/moose{{ mnt[-1] }}:
+ mount.mounted:
+ - device: {{ mnt }}
+ - fstype: xfs
+ - mkmnt: True
+ file.directory:
+ - user: mfs
+ - group: mfs
+ - require:
+ - user: mfs
+ - group: mfs
+{% endfor %}
+
+/etc/mfshdd.cfg:
+ file.managed:
+ - source: salt://moosefs/mfshdd.cfg
+ - user: root
+ - group: root
+ - mode: 644
+ - template: jinja
+ - require:
+ - pkg: mfs-chunkserver
+
+/etc/mfschunkserver.cfg:
+ file.managed:
+ - source: salt://moosefs/mfschunkserver.cfg
+ - user: root
+ - group: root
+ - mode: 644
+ - template: jinja
+ - require:
+ - pkg: mfs-chunkserver
+
+mfs-chunkserver:
+ pkg:
+ - installed
+mfschunkserver:
+ service:
+ - running
+ - require:
+{% for mnt in salt['cmd.run']('ls /dev/data/moose*') %}
+ - mount: /mnt/moose{{ mnt[-1] }}
+ - file: /mnt/moose{{ mnt[-1] }}
+{% endfor %}
+ - file: /etc/mfschunkserver.cfg
+ - file: /etc/mfshdd.cfg
+ - file: /var/lib/mfs