diff options
| author | Tim Hatch <tim@timhatch.com> | 2015-11-02 20:59:30 -0800 |
|---|---|---|
| committer | Tim Hatch <tim@timhatch.com> | 2015-11-02 20:59:30 -0800 |
| commit | 39b04c956deca69ff5befcfdcc76c5212f65d972 (patch) | |
| tree | fa6afc9a37dc586cfe823ecb2294912587e3c559 /pygments | |
| parent | 78a5a260042ce6911d2a3bc668f6be159d7a612b (diff) | |
| parent | 470742e01fda77c990872ae52672c39522c5b5a1 (diff) | |
| download | pygments-39b04c956deca69ff5befcfdcc76c5212f65d972.tar.gz | |
Re-merge pull request #507.
Diffstat (limited to 'pygments')
| -rw-r--r-- | pygments/lexers/_csound_builtins.py | 3 | ||||
| -rw-r--r-- | pygments/lexers/_mapping.py | 1 | ||||
| -rw-r--r-- | pygments/lexers/csound.py | 93 |
3 files changed, 47 insertions, 50 deletions
diff --git a/pygments/lexers/_csound_builtins.py b/pygments/lexers/_csound_builtins.py index ddf87a64..5f7a798a 100644 --- a/pygments/lexers/_csound_builtins.py +++ b/pygments/lexers/_csound_builtins.py @@ -12,6 +12,7 @@ # endop <http://www.csounds.com/manual/html/endop.html # goto <http://www.csounds.com/manual/html/goto.html> # igoto <http://www.csounds.com/manual/html/igoto.html> +# instr <http://www.csounds.com/manual/html/instr.html> # kgoto <http://www.csounds.com/manual/html/kgoto.html> # loop_ge <http://www.csounds.com/manual/html/loop_ge.html> # loop_gt <http://www.csounds.com/manual/html/loop_gt.html> @@ -463,7 +464,7 @@ OPCODES = set(( 'ins', 'insglobal', 'insremot', - 'instr', + #'instr', 'int', 'integ', 'interp', diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py index a0ed60d8..af7eec36 100644 --- a/pygments/lexers/_mapping.py +++ b/pygments/lexers/_mapping.py @@ -91,6 +91,7 @@ LEXERS = { 'CrmshLexer': ('pygments.lexers.dsls', 'Crmsh', ('crmsh', 'pcmk'), ('*.crmsh', '*.pcmk'), ()), 'CrocLexer': ('pygments.lexers.d', 'Croc', ('croc',), ('*.croc',), ('text/x-crocsrc',)), 'CryptolLexer': ('pygments.lexers.haskell', 'Cryptol', ('cryptol', 'cry'), ('*.cry',), ('text/x-cryptol',)), + 'CsoundDocumentLexer': ('pygments.lexers.csound', 'Csound Document', (), ('*.csd',), ()), 'CsoundOrchestraLexer': ('pygments.lexers.csound', 'Csound Orchestra', (), ('*.orc',), ()), 'CsoundScoreLexer': ('pygments.lexers.csound', 'Csound Score', (), ('*.sco',), ()), 'CssDjangoLexer': ('pygments.lexers.templates', 'CSS+Django/Jinja', ('css+django', 'css+jinja'), (), ('text/css+django', 'text/css+jinja')), diff --git a/pygments/lexers/csound.py b/pygments/lexers/csound.py index 361f048a..b9613bdf 100644 --- a/pygments/lexers/csound.py +++ b/pygments/lexers/csound.py @@ -9,17 +9,17 @@ :license: BSD, see LICENSE for details. """ -import re +import copy, re from pygments.lexer import RegexLexer, bygroups, default, include, using, words from pygments.token import Comment, Keyword, Name, Number, Operator, Punctuation, \ String, Text from pygments.lexers._csound_builtins import OPCODES +from pygments.lexers.html import HtmlLexer, XmlLexer from pygments.lexers.python import PythonLexer from pygments.lexers.scripting import LuaLexer -# The CsoundDocumentLexer casuses a Pygments test to fail. -__all__ = ['CsoundScoreLexer', 'CsoundOrchestraLexer'] # , 'CsoundDocumentLexer'] +__all__ = ['CsoundScoreLexer', 'CsoundOrchestraLexer', 'CsoundDocumentLexer'] newline = (r'((?:;|//).*)*(\n)', bygroups(Comment.Single, Text)) @@ -309,49 +309,44 @@ class CsoundOrchestraLexer(CsoundLexer): } -# Below is a lexer for Csound documents, but it causes a Pygments test to fail. - -# import copy -# from pygments.lexers.html import HtmlLexer, XmlLexer -# -# class CsoundDocumentLexer(XmlLexer): -# """ -# For `Csound <http://csound.github.io>`_ documents. -# """ -# -# name = 'Csound Document' -# aliases = ['csound'] -# filenames = ['*.csd'] -# -# tokens = copy.deepcopy(XmlLexer.tokens) -# for i, item in enumerate(tokens['root']): -# if len(item) > 2 and item[2] == 'tag': -# (tokens['root']).insert(i, (r'(<)(\s*)(CsInstruments)(\s*)', -# bygroups(Name.Tag, Text, Name.Tag, Text), -# ('orchestra content', 'tag'))) -# (tokens['root']).insert(i, (r'(<)(\s*)(CsScore)(\s*)', -# bygroups(Name.Tag, Text, Name.Tag, Text), -# ('score content', 'tag'))) -# (tokens['root']).insert(i, (r'(<)(\s*)(html)(\s*)', -# bygroups(Name.Tag, Text, Name.Tag, Text), -# ('HTML', 'tag'))) -# break -# -# tokens['orchestra content'] = [ -# (r'(<)(\s*)(/)(\s*)(CsInstruments)(\s*)(>)', -# bygroups(Name.Tag, Text, Name.Tag, Text, Name.Tag, Text, Name.Tag), -# '#pop'), -# (r'.+?(?=<\s*/\s*CsInstruments\s*>)', using(CsoundOrchestraLexer)) -# ] -# tokens['score content'] = [ -# (r'(<)(\s*)(/)(\s*)(CsScore)(\s*)(>)', -# bygroups(Name.Tag, Text, Name.Tag, Text, Name.Tag, Text, Name.Tag), -# '#pop'), -# (r'.+?(?=<\s*/\s*CsScore\s*>)', using(CsoundScoreLexer)) -# ] -# tokens['HTML'] = [ -# (r'(<)(\s*)(/)(\s*)(html)(\s*)(>)', -# bygroups(Name.Tag, Text, Name.Tag, Text, Name.Tag, Text, Name.Tag), -# '#pop'), -# (r'.+?(?=<\s*/\s*html\s*>)', using(HtmlLexer)) -# ] +class CsoundDocumentLexer(XmlLexer): + """ + For `Csound <http://csound.github.io>`_ documents. + + + """ + + name = 'Csound Document' + aliases = [] + filenames = ['*.csd'] + mimetypes = [] + + tokens = copy.deepcopy(XmlLexer.tokens) + for i, item in enumerate(tokens['root']): + if len(item) > 2 and item[2] == 'tag': + (tokens['root']).insert(i, (r'(<)(\s*)(CsInstruments)(\s*)', + bygroups(Name.Tag, Text, Name.Tag, Text), + ('orchestra content', 'tag'))) + (tokens['root']).insert(i, (r'(<)(\s*)(CsScore)(\s*)', + bygroups(Name.Tag, Text, Name.Tag, Text), + ('score content', 'tag'))) + (tokens['root']).insert(i, (r'(<)(\s*)(html)(\s*)', + bygroups(Name.Tag, Text, Name.Tag, Text), + ('HTML', 'tag'))) + break + + tokens['orchestra content'] = [ + (r'(<)(\s*)(/)(\s*)(CsInstruments)(\s*)(>)', + bygroups(Name.Tag, Text, Name.Tag, Text, Name.Tag, Text, Name.Tag), '#pop'), + (r'.+?(?=<\s*/\s*CsInstruments\s*>)', using(CsoundOrchestraLexer)) + ] + tokens['score content'] = [ + (r'(<)(\s*)(/)(\s*)(CsScore)(\s*)(>)', + bygroups(Name.Tag, Text, Name.Tag, Text, Name.Tag, Text, Name.Tag), '#pop'), + (r'.+?(?=<\s*/\s*CsScore\s*>)', using(CsoundScoreLexer)) + ] + tokens['HTML'] = [ + (r'(<)(\s*)(/)(\s*)(html)(\s*)(>)', + bygroups(Name.Tag, Text, Name.Tag, Text, Name.Tag, Text, Name.Tag), '#pop'), + (r'.+?(?=<\s*/\s*html\s*>)', using(HtmlLexer)) + ] |
