diff options
author | gbrandl <devnull@localhost> | 2006-10-28 20:28:46 +0200 |
---|---|---|
committer | gbrandl <devnull@localhost> | 2006-10-28 20:28:46 +0200 |
commit | d336a1d4c0375b2b7cf266b6073932e3abb0968d (patch) | |
tree | b4c055b55cd39905b97bf742bde988ca68cf9b71 | |
parent | 1612315c4b33db53324d6b1e0176b4a8c3f129ca (diff) | |
download | pygments-d336a1d4c0375b2b7cf266b6073932e3abb0968d.tar.gz |
[svn] Add mime type selection for lexers.
-rw-r--r-- | TODO | 4 | ||||
-rw-r--r-- | pygments/lexer.py | 3 | ||||
-rw-r--r-- | pygments/lexers/__init__.py | 37 | ||||
-rw-r--r-- | pygments/lexers/_mapping.py | 105 | ||||
-rw-r--r-- | pygments/lexers/agile.py | 4 | ||||
-rw-r--r-- | pygments/lexers/compiled.py | 4 | ||||
-rw-r--r-- | pygments/lexers/dotnet.py | 3 | ||||
-rw-r--r-- | pygments/lexers/other.py | 1 | ||||
-rw-r--r-- | pygments/lexers/special.py | 2 | ||||
-rw-r--r-- | pygments/lexers/templates.py | 3 | ||||
-rw-r--r-- | pygments/lexers/text.py | 3 | ||||
-rw-r--r-- | pygments/lexers/web.py | 4 |
12 files changed, 112 insertions, 61 deletions
@@ -9,7 +9,7 @@ before 0.5 - more unit tests -- docstrings? +- documentation for new features (guessing) - goto label HL support for languages that use it @@ -52,6 +52,8 @@ for 0.6 - review perl lexer (numerous bugs) +- docstrings? + for 0.7 ------- diff --git a/pygments/lexer.py b/pygments/lexer.py index 55a74e19..e5264888 100644 --- a/pygments/lexer.py +++ b/pygments/lexer.py @@ -68,6 +68,9 @@ class Lexer(object): #: fn alias filenames alias_filenames = [] + #: mime types + mimetypes = [] + __metaclass__ = LexerMeta def __init__(self, **options): diff --git a/pygments/lexers/__init__.py b/pygments/lexers/__init__.py index 2dcab576..f8e6c90a 100644 --- a/pygments/lexers/__init__.py +++ b/pygments/lexers/__init__.py @@ -39,7 +39,7 @@ def _load_lexers(module_name): def _iter_lexers(): """ - Returns a generator for all lexer classes + Returns an iterator over all lexer classes. """ for module_name, name, _, _ in LEXERS.itervalues(): if name not in _lexer_cache: @@ -51,10 +51,10 @@ def _iter_lexers(): def get_lexer_by_name(_alias, **options): """ - Get a lexer by an alias + Get a lexer by an alias. """ # lookup builtin lexers - for module_name, name, aliases, _ in LEXERS.itervalues(): + for module_name, name, aliases, _, _ in LEXERS.itervalues(): if _alias in aliases: if name not in _lexer_cache: _load_lexers(module_name) @@ -63,19 +63,40 @@ def get_lexer_by_name(_alias, **options): for cls in find_plugin_lexers(): if _alias in cls.aliases: return cls(**options) - raise ValueError('no lexer for alias %r found' % alias) + raise ValueError('no lexer for alias %r found' % _alias) def get_lexer_for_filename(_fn, **options): """ - Guess a lexer by a filename + Get a lexer for a filename. """ fn = basename(_fn) - for lexer in _iter_lexers(): - for filename in lexer.filenames: + for modname, name, _, filenames, _ in LEXERS.itervalues(): + for filename in filenames: + if fnmatch.fnmatch(_fn, filename): + if name not in _lexer_cache: + _load_lexers(modname) + return _lexer_cache[name](**options) + for cls in find_plugin_lexers(): + for filename in cls.filenames: if fnmatch.fnmatch(_fn, filename): return lexer(**options) - raise ValueError('no lexer for filename %r found' % fn) + raise ValueError('no lexer for filename %r found' % _fn) + + +def get_lexer_for_mimetype(_mime, **options): + """ + Get a lexer for a mimetype. + """ + for modname, name, _, _, mimetypes in LEXERS.itervalues(): + if _mime in mimetypes: + if name not in _lexer_cache: + _load_lexers(modname) + return _lexer_cache[name](**options) + for cls in find_plugin_lexers(): + if _mime in cls.mimetypes: + return lexer(**options) + raise ValueError('no lexer for mimetype %r found' % _mime) def guess_lexer_for_filename(_fn, _text, **options): diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py index 4268435d..17755334 100644 --- a/pygments/lexers/_mapping.py +++ b/pygments/lexers/_mapping.py @@ -14,57 +14,57 @@ """ LEXERS = { - 'BooLexer': ('pygments.lexers.dotnet', 'Boo', ('boo',), ('*.boo',)), - 'BrainfuckLexer': ('pygments.lexers.other', 'Brainfuck', ('brainfuck', 'bf'), ('*.bf', '*.b')), - 'CLexer': ('pygments.lexers.compiled', 'C', ('c',), ('*.c', '*.h')), - 'CSharpLexer': ('pygments.lexers.dotnet', 'C#', ('csharp', 'c#'), ('*.cs',)), - 'CppLexer': ('pygments.lexers.compiled', 'C++', ('cpp', 'c++'), ('*.cpp', '*.hpp', '*.c++', '*.h++')), - 'CssDjangoLexer': ('pygments.lexers.templates', 'CSS+Django/Jinja', ('css+django', 'css+jinja'), ()), - 'CssErbLexer': ('pygments.lexers.templates', 'CSS+Ruby', ('css+erb', 'css+ruby'), ()), - 'CssGenshiLexer': ('pygments.lexers.templates', 'CSS+Genshi Text', ('css+genshitext', 'css+genshi'), ()), - 'CssLexer': ('pygments.lexers.web', 'CSS', ('css',), ('*.css',)), - 'CssPhpLexer': ('pygments.lexers.templates', 'CSS+PHP', ('css+php',), ()), - 'CssSmartyLexer': ('pygments.lexers.templates', 'CSS+Smarty', ('css+smarty',), ()), - 'DelphiLexer': ('pygments.lexers.compiled', 'Delphi', ('delphi', 'pas', 'pascal', 'objectpascal'), ('*.pas',)), - 'DiffLexer': ('pygments.lexers.text', 'Diff', ('diff',), ('*.diff', '*.patch')), - 'DjangoLexer': ('pygments.lexers.templates', 'Django/Jinja', ('django', 'jinja'), ()), - 'ErbLexer': ('pygments.lexers.templates', 'ERB', ('erb',), ()), - 'GenshiLexer': ('pygments.lexers.templates', 'Genshi', ('genshi', 'kid', 'xml+genshi', 'xml+kid'), ('*.kid',)), - 'GenshiTextLexer': ('pygments.lexers.templates', 'Genshi Text', ('genshitext',), ()), - 'HtmlDjangoLexer': ('pygments.lexers.templates', 'HTML+Django/Jinja', ('html+django', 'html+jinja'), ()), - 'HtmlGenshiLexer': ('pygments.lexers.templates', 'HTML+Genshi', ('html+genshi', 'html+kid'), ()), - 'HtmlLexer': ('pygments.lexers.web', 'HTML', ('html',), ('*.html', '*.htm', '*.xhtml')), - 'HtmlPhpLexer': ('pygments.lexers.templates', 'HTML+PHP', ('html+php',), ('*.phtml',)), - 'HtmlSmartyLexer': ('pygments.lexers.templates', 'HTML+Smarty', ('html+smarty',), ()), - 'IniLexer': ('pygments.lexers.text', 'INI', ('ini', 'cfg'), ('*.ini', '*.cfg')), - 'IrcLogsLexer': ('pygments.lexers.text', 'IRC logs', ('irc',), ()), - 'JavaLexer': ('pygments.lexers.compiled', 'Java', ('java',), ('*.java',)), - 'JavascriptDjangoLexer': ('pygments.lexers.templates', 'JavaScript+Django/Jinja', ('js+django', 'javascript+django', 'js+jinja', 'javascript+jinja'), ()), - 'JavascriptErbLexer': ('pygments.lexers.templates', 'JavaScript+Ruby', ('js+erb', 'javascript+erb', 'js+ruby', 'javascript+ruby'), ()), - 'JavascriptGenshiLexer': ('pygments.lexers.templates', 'JavaScript+Genshi Text', ('js+genshitext', 'js+genshi', 'javascript+genshitext', 'javascript+genshi'), ()), - 'JavascriptLexer': ('pygments.lexers.web', 'JavaScript', ('js', 'javascript'), ('*.js',)), - 'JavascriptPhpLexer': ('pygments.lexers.templates', 'JavaScript+PHP', ('js+php', 'javascript+php'), ()), - 'JavascriptSmartyLexer': ('pygments.lexers.templates', 'JavaScript+Smarty', ('js+smarty', 'javascript+smarty'), ()), - 'LuaLexer': ('pygments.lexers.agile', 'Lua', ('lua',), ('*.lua',)), - 'MakefileLexer': ('pygments.lexers.text', 'Makefile', ('make', 'makefile', 'mf'), ('*.mak', 'Makefile', 'makefile')), - 'PerlLexer': ('pygments.lexers.agile', 'Perl', ('perl', 'pl'), ('*.pl', '*.pm')), - 'PhpLexer': ('pygments.lexers.web', 'PHP', ('php', 'php3', 'php4', 'php5'), ('*.php', '*.php[345]')), - 'PythonConsoleLexer': ('pygments.lexers.agile', 'Python console session', ('pycon',), ()), - 'PythonLexer': ('pygments.lexers.agile', 'Python', ('python', 'py'), ('*.py', '*.pyw')), - 'RawTokenLexer': ('pygments.lexers.special', 'Raw token data', ('raw',), ('*.raw',)), - 'RhtmlLexer': ('pygments.lexers.templates', 'RHTML', ('rhtml', 'html+erb', 'html+ruby'), ('*.rhtml',)), - 'RubyConsoleLexer': ('pygments.lexers.agile', 'Ruby irb session', ('rbcon', 'irb'), ()), - 'RubyLexer': ('pygments.lexers.agile', 'Ruby', ('rb', 'ruby'), ('*.rb', '*.rbw', 'Rakefile', '*.rake', '*.gemspec', '*.rbx')), - 'SmartyLexer': ('pygments.lexers.templates', 'Smarty', ('smarty',), ()), - 'SqlLexer': ('pygments.lexers.other', 'SQL', ('sql',), ('*.sql',)), - 'TexLexer': ('pygments.lexers.text', 'TeX', ('tex', 'latex'), ('*.tex', '*.aux', '*.toc')), - 'TextLexer': ('pygments.lexers.special', 'Text only', ('text',), ('*.txt',)), - 'VbNetLexer': ('pygments.lexers.dotnet', 'VB.net', ('vb.net', 'vbnet'), ('*.vb', '*.bas')), - 'XmlDjangoLexer': ('pygments.lexers.templates', 'XML+Django/Jinja', ('xml+django', 'xml+jinja'), ()), - 'XmlErbLexer': ('pygments.lexers.templates', 'XML+Ruby', ('xml+erb', 'xml+ruby'), ()), - 'XmlLexer': ('pygments.lexers.web', 'XML', ('xml',), ('*.xml',)), - 'XmlPhpLexer': ('pygments.lexers.templates', 'XML+PHP', ('xml+php',), ()), - 'XmlSmartyLexer': ('pygments.lexers.templates', 'XML+Smarty', ('xml+smarty',), ()) + 'BooLexer': ('pygments.lexers.dotnet', 'Boo', ('boo',), ('*.boo',), ('text/x-boo',)), + 'BrainfuckLexer': ('pygments.lexers.other', 'Brainfuck', ('bf', 'brainfuck'), ('*.b', '*.bf'), ()), + 'CLexer': ('pygments.lexers.compiled', 'C', ('c',), ('*.c', '*.h'), ('text/x-chdr', 'text/x-csrc')), + 'CSharpLexer': ('pygments.lexers.dotnet', 'C#', ('c#', 'csharp'), ('*.cs',), ('text/x-csharp',)), + 'CppLexer': ('pygments.lexers.compiled', 'C++', ('cpp', 'c++'), ('*.c++', '*.hpp', '*.cpp', '*.h++'), ('text/x-c++hdr', 'text/x-c++src')), + 'CssDjangoLexer': ('pygments.lexers.templates', 'CSS+Django/Jinja', ('css+jinja', 'css+django'), (), ()), + 'CssErbLexer': ('pygments.lexers.templates', 'CSS+Ruby', ('css+ruby', 'css+erb'), (), ()), + 'CssGenshiLexer': ('pygments.lexers.templates', 'CSS+Genshi Text', ('css+genshi', 'css+genshitext'), (), ()), + 'CssLexer': ('pygments.lexers.web', 'CSS', ('css',), ('*.css',), ('text/css',)), + 'CssPhpLexer': ('pygments.lexers.templates', 'CSS+PHP', ('css+php',), (), ()), + 'CssSmartyLexer': ('pygments.lexers.templates', 'CSS+Smarty', ('css+smarty',), (), ()), + 'DelphiLexer': ('pygments.lexers.compiled', 'Delphi', ('objectpascal', 'delphi', 'pas', 'pascal'), ('*.pas',), ('text/x-pascal',)), + 'DiffLexer': ('pygments.lexers.text', 'Diff', ('diff',), ('*.diff', '*.patch'), ('text/x-diff',)), + 'DjangoLexer': ('pygments.lexers.templates', 'Django/Jinja', ('jinja', 'django'), (), ()), + 'ErbLexer': ('pygments.lexers.templates', 'ERB', ('erb',), (), ()), + 'GenshiLexer': ('pygments.lexers.templates', 'Genshi', ('xml+kid', 'xml+genshi', 'genshi', 'kid'), ('*.kid',), ()), + 'GenshiTextLexer': ('pygments.lexers.templates', 'Genshi Text', ('genshitext',), (), ()), + 'HtmlDjangoLexer': ('pygments.lexers.templates', 'HTML+Django/Jinja', ('html+jinja', 'html+django'), (), ()), + 'HtmlGenshiLexer': ('pygments.lexers.templates', 'HTML+Genshi', ('html+genshi', 'html+kid'), (), ()), + 'HtmlLexer': ('pygments.lexers.web', 'HTML', ('html',), ('*.xhtml', '*.html', '*.htm'), ('text/html', 'application/xhtml+xml')), + 'HtmlPhpLexer': ('pygments.lexers.templates', 'HTML+PHP', ('html+php',), ('*.phtml',), ('text/x-php', 'application/x-php', 'application/x-httpd-php', 'application/x-httpd-php3', 'application/x-httpd-php4', 'application/x-httpd-php5')), + 'HtmlSmartyLexer': ('pygments.lexers.templates', 'HTML+Smarty', ('html+smarty',), (), ()), + 'IniLexer': ('pygments.lexers.text', 'INI', ('cfg', 'ini'), ('*.ini', '*.cfg'), ()), + 'IrcLogsLexer': ('pygments.lexers.text', 'IRC logs', ('irc',), (), ()), + 'JavaLexer': ('pygments.lexers.compiled', 'Java', ('java',), ('*.java',), ('text/x-java',)), + 'JavascriptDjangoLexer': ('pygments.lexers.templates', 'JavaScript+Django/Jinja', ('javascript+django', 'js+jinja', 'javascript+jinja', 'js+django'), (), ()), + 'JavascriptErbLexer': ('pygments.lexers.templates', 'JavaScript+Ruby', ('javascript+ruby', 'javascript+erb', 'js+ruby', 'js+erb'), (), ()), + 'JavascriptGenshiLexer': ('pygments.lexers.templates', 'JavaScript+Genshi Text', ('javascript+genshitext', 'javascript+genshi', 'js+genshitext', 'js+genshi'), (), ()), + 'JavascriptLexer': ('pygments.lexers.web', 'JavaScript', ('javascript', 'js'), ('*.js',), ('application/x-javascript', 'text/x-javascript')), + 'JavascriptPhpLexer': ('pygments.lexers.templates', 'JavaScript+PHP', ('js+php', 'javascript+php'), (), ()), + 'JavascriptSmartyLexer': ('pygments.lexers.templates', 'JavaScript+Smarty', ('javascript+smarty', 'js+smarty'), (), ()), + 'LuaLexer': ('pygments.lexers.agile', 'Lua', ('lua',), ('*.lua',), ('text/x-lua', 'application/x-lua')), + 'MakefileLexer': ('pygments.lexers.text', 'Makefile', ('make', 'mf', 'makefile'), ('Makefile', '*.mak', 'makefile'), ('text/x-makefile',)), + 'PerlLexer': ('pygments.lexers.agile', 'Perl', ('pl', 'perl'), ('*.pl', '*.pm'), ('text/x-perl', 'application/x-perl')), + 'PhpLexer': ('pygments.lexers.web', 'PHP', ('php4', 'php5', 'php', 'php3'), ('*.php', '*.php[345]'), ()), + 'PythonConsoleLexer': ('pygments.lexers.agile', 'Python console session', ('pycon',), (), ()), + 'PythonLexer': ('pygments.lexers.agile', 'Python', ('python', 'py'), ('*.pyw', '*.py'), ('text/x-python', 'application/x-python')), + 'RawTokenLexer': ('pygments.lexers.special', 'Raw token data', ('raw',), ('*.raw',), ('application/x-pygments-tokens',)), + 'RhtmlLexer': ('pygments.lexers.templates', 'RHTML', ('html+ruby', 'rhtml', 'html+erb'), ('*.rhtml',), ()), + 'RubyConsoleLexer': ('pygments.lexers.agile', 'Ruby irb session', ('irb', 'rbcon'), (), ()), + 'RubyLexer': ('pygments.lexers.agile', 'Ruby', ('ruby', 'rb'), ('*.rb', '*.rbx', '*.gemspec', 'Rakefile', '*.rake', '*.rbw'), ('text/x-ruby', 'application/x-ruby')), + 'SmartyLexer': ('pygments.lexers.templates', 'Smarty', ('smarty',), ('*.tpl',), ()), + 'SqlLexer': ('pygments.lexers.other', 'SQL', ('sql',), ('*.sql',), ('text/x-sql',)), + 'TexLexer': ('pygments.lexers.text', 'TeX', ('tex', 'latex'), ('*.toc', '*.tex', '*.aux'), ('text/x-tex', 'text/x-latex')), + 'TextLexer': ('pygments.lexers.special', 'Text only', ('text',), ('*.txt',), ('text/plain',)), + 'VbNetLexer': ('pygments.lexers.dotnet', 'VB.net', ('vb.net', 'vbnet'), ('*.bas', '*.vb'), ('text/x-vbnet', 'text/x-vba')), + 'XmlDjangoLexer': ('pygments.lexers.templates', 'XML+Django/Jinja', ('xml+django', 'xml+jinja'), (), ()), + 'XmlErbLexer': ('pygments.lexers.templates', 'XML+Ruby', ('xml+ruby', 'xml+erb'), (), ()), + 'XmlLexer': ('pygments.lexers.web', 'XML', ('xml',), ('*.xml',), ('text/xml', 'application/xml', 'image/svg+xml')), + 'XmlPhpLexer': ('pygments.lexers.templates', 'XML+PHP', ('xml+php',), (), ()), + 'XmlSmartyLexer': ('pygments.lexers.templates', 'XML+Smarty', ('xml+smarty',), (), ()) } if __name__ == '__main__': @@ -86,7 +86,8 @@ if __name__ == '__main__': (module_name, lexer.name, tuple(lexer.aliases), - tuple(lexer.filenames)))) + tuple(lexer.filenames), + tuple(lexer.mimetypes)))) # sort them, that should make the diff files for svn smaller found_lexers.sort() diff --git a/pygments/lexers/agile.py b/pygments/lexers/agile.py index aec32450..707bad33 100644 --- a/pygments/lexers/agile.py +++ b/pygments/lexers/agile.py @@ -32,6 +32,7 @@ class PythonLexer(RegexLexer): name = 'Python' aliases = ['python', 'py'] filenames = ['*.py', '*.pyw'] + mimetypes = ['text/x-python', 'application/x-python'] tokens = { 'root': [ @@ -199,6 +200,7 @@ class RubyLexer(ExtendedRegexLexer): name = 'Ruby' aliases = ['rb', 'ruby'] filenames = ['*.rb', '*.rbw', 'Rakefile', '*.rake', '*.gemspec', '*.rbx'] + mimetypes = ['text/x-ruby', 'application/x-ruby'] flags = re.DOTALL | re.MULTILINE @@ -557,6 +559,7 @@ class PerlLexer(RegexLexer): name = 'Perl' aliases = ['perl', 'pl'] filenames = ['*.pl', '*.pm'] + mimetypes = ['text/x-perl', 'application/x-perl'] flags = re.DOTALL | re.MULTILINE # TODO: give this a perl guy who knows how to parse perl... @@ -689,6 +692,7 @@ class LuaLexer(RegexLexer): name = 'Lua' aliases = ['lua'] filenames = ['*.lua'] + mimetypes = ['text/x-lua', 'application/x-lua'] tokens = { 'root': [ diff --git a/pygments/lexers/compiled.py b/pygments/lexers/compiled.py index dc154657..aa08de90 100644 --- a/pygments/lexers/compiled.py +++ b/pygments/lexers/compiled.py @@ -23,6 +23,7 @@ class CLexer(RegexLexer): name = 'C' aliases = ['c'] filenames = ['*.c', '*.h'] + mimetypes = ['text/x-chdr', 'text/x-csrc'] #: optional Comment or Whitespace _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+' @@ -115,6 +116,7 @@ class CppLexer(RegexLexer): name = 'C++' aliases = ['cpp', 'c++'] filenames = ['*.cpp', '*.hpp', '*.c++', '*.h++'] + mimetypes = ['text/x-c++hdr', 'text/x-c++src'] tokens = { 'root': [ @@ -184,6 +186,7 @@ class DelphiLexer(RegexLexer): name = 'Delphi' aliases = ['delphi', 'pas', 'pascal', 'objectpascal'] filenames = ['*.pas'] + mimetypes = ['text/x-pascal'] flags = re.IGNORECASE | re.MULTILINE | re.DOTALL tokens = { @@ -269,6 +272,7 @@ class JavaLexer(RegexLexer): name = 'Java' aliases = ['java'] filenames = ['*.java'] + mimetypes = ['text/x-java'] flags = re.MULTILINE | re.DOTALL diff --git a/pygments/lexers/dotnet.py b/pygments/lexers/dotnet.py index f3932c37..bfc59233 100644 --- a/pygments/lexers/dotnet.py +++ b/pygments/lexers/dotnet.py @@ -21,6 +21,7 @@ class CSharpLexer(RegexLexer): name = 'C#' aliases = ['csharp', 'c#'] filenames = ['*.cs'] + mimetypes = ['text/x-csharp'] # inferred flags = re.MULTILINE | re.DOTALL @@ -77,6 +78,7 @@ class BooLexer(RegexLexer): name = 'Boo' aliases = ['boo'] filenames = ['*.boo'] + mimetypes = ['text/x-boo'] tokens = { 'root': [ @@ -139,6 +141,7 @@ class VbNetLexer(RegexLexer): name = 'VB.net' aliases = ['vb.net', 'vbnet'] filenames = ['*.vb', '*.bas'] + mimetypes = ['text/x-vbnet', 'text/x-vba'] # (?) flags = re.MULTILINE | re.IGNORECASE tokens = { diff --git a/pygments/lexers/other.py b/pygments/lexers/other.py index de9f5ccc..38fac7d4 100644 --- a/pygments/lexers/other.py +++ b/pygments/lexers/other.py @@ -23,6 +23,7 @@ class SqlLexer(RegexLexer): name = 'SQL' aliases = ['sql'] filenames = ['*.sql'] + mimetypes = ['text/x-sql'] flags = re.IGNORECASE tokens = { diff --git a/pygments/lexers/special.py b/pygments/lexers/special.py index 18a0e0cf..621145a2 100644 --- a/pygments/lexers/special.py +++ b/pygments/lexers/special.py @@ -24,6 +24,7 @@ class TextLexer(Lexer): name = 'Text only' aliases = ['text'] filenames = ['*.txt'] + mimetypes = ['text/plain'] def get_tokens_unprocessed(self, text): yield 0, Text, text @@ -46,6 +47,7 @@ class RawTokenLexer(Lexer): name = 'Raw token data' aliases = ['raw'] filenames = ['*.raw'] + mimetypes = ['application/x-pygments-tokens'] def __init__(self, **options): self.compress = options.get('compress', '') diff --git a/pygments/lexers/templates.py b/pygments/lexers/templates.py index dddc14b4..09454f2b 100644 --- a/pygments/lexers/templates.py +++ b/pygments/lexers/templates.py @@ -440,6 +440,9 @@ class HtmlPhpLexer(DelegatingLexer): filenames = ['*.phtml'] alias_filenames = ['*.php', '*.html', '*.htm', '*.xhtml', '*.php[345]'] + mimetypes = ['text/x-php', 'application/x-php', + 'application/x-httpd-php', 'application/x-httpd-php3', + 'application/x-httpd-php4', 'application/x-httpd-php5'] def __init__(self, **options): super(HtmlPhpLexer, self).__init__(HtmlLexer, PhpLexer, **options) diff --git a/pygments/lexers/text.py b/pygments/lexers/text.py index 6bce841f..6c35e1d3 100644 --- a/pygments/lexers/text.py +++ b/pygments/lexers/text.py @@ -40,6 +40,7 @@ class MakefileLexer(RegexLexer): name = 'Makefile' aliases = ['make', 'makefile', 'mf'] filenames = ['*.mak', 'Makefile', 'makefile'] + mimetypes = ['text/x-makefile'] tokens = { 'root': [ @@ -82,6 +83,7 @@ class DiffLexer(RegexLexer): name = 'Diff' aliases = ['diff'] filenames = ['*.diff', '*.patch'] + mimetypes = ['text/x-diff'] tokens = { 'root': [ @@ -141,6 +143,7 @@ class TexLexer(RegexLexer): name = 'TeX' aliases = ['tex', 'latex'] filenames = ['*.tex', '*.aux', '*.toc'] + mimetypes = ['text/x-tex', 'text/x-latex'] tokens = { 'general': [ diff --git a/pygments/lexers/web.py b/pygments/lexers/web.py index 939144dd..8e7f3e01 100644 --- a/pygments/lexers/web.py +++ b/pygments/lexers/web.py @@ -30,6 +30,7 @@ class JavascriptLexer(RegexLexer): name = 'JavaScript' aliases = ['js', 'javascript'] filenames = ['*.js'] + mimetypes = ['application/x-javascript', 'text/x-javascript'] flags = re.DOTALL tokens = { @@ -60,6 +61,7 @@ class CssLexer(RegexLexer): name = 'CSS' aliases = ['css'] filenames = ['*.css'] + mimetypes = ['text/css'] tokens = { 'root': [ @@ -178,6 +180,7 @@ class HtmlLexer(RegexLexer): name = 'HTML' aliases = ['html'] filenames = ['*.html', '*.htm', '*.xhtml'] + mimetypes = ['text/html', 'application/xhtml+xml'] flags = re.IGNORECASE | re.DOTALL tokens = { @@ -315,6 +318,7 @@ class XmlLexer(RegexLexer): name = 'XML' aliases = ['xml'] filenames = ['*.xml'] + mimetypes = ['text/xml', 'application/xml', 'image/svg+xml'] tokens = { 'root': [ |