diff options
Diffstat (limited to 'pygments/lexers/__init__.py')
-rw-r--r-- | pygments/lexers/__init__.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/pygments/lexers/__init__.py b/pygments/lexers/__init__.py index 7d0b89d4..d64f163f 100644 --- a/pygments/lexers/__init__.py +++ b/pygments/lexers/__init__.py @@ -72,6 +72,28 @@ def find_lexer_class(name): return cls +def find_lexer_class_by_name(alias): + """Lookup a lexer class by alias. + + Like `get_lexer_by_name`, but does not instantiate the class. + + .. versionadded:: 2.2 + """ + if not _alias: + raise ClassNotFound('no lexer for alias %r found' % _alias) + # lookup builtin lexers + for module_name, name, aliases, _, _ in itervalues(LEXERS): + if _alias.lower() in aliases: + if name not in _lexer_cache: + _load_lexers(module_name) + return _lexer_cache[name] + # continue with lexers from setuptools entrypoints + for cls in find_plugin_lexers(): + if _alias.lower() in cls.aliases: + return cls + raise ClassNotFound('no lexer for alias %r found' % _alias) + + def get_lexer_by_name(_alias, **options): """Get a lexer by an alias. |