summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Whetsell <nathan.whetsell@gmail.com>2015-10-23 21:14:50 -0400
committerNathan Whetsell <nathan.whetsell@gmail.com>2015-10-23 21:14:50 -0400
commite21965d42660c6bb58d62dffed01085ba230e4c6 (patch)
treedea538953720e447b0d7bbabf7e3bf4d08111a71
parentbd1d943efc27031032e2f8c911c0909381b577ca (diff)
downloadpygments-e21965d42660c6bb58d62dffed01085ba230e4c6.tar.gz
Add Csound Document lexer
-rw-r--r--pygments/lexers/_mapping.py1
-rw-r--r--pygments/lexers/csound.py93
2 files changed, 45 insertions, 49 deletions
diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py
index 03a3c96e..e715af2e 100644
--- a/pygments/lexers/_mapping.py
+++ b/pygments/lexers/_mapping.py
@@ -90,6 +90,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))
+ ]