ThirdParty/Pygments/pygments/lexers/__init__.py

changeset 12
1d8dd9706f46
parent 0
de9c2efb9d02
child 684
2f29a0b6e1c7
equal deleted inserted replaced
11:b0996e4a289e 12:1d8dd9706f46
22 from pygments.plugin import find_plugin_lexers 22 from pygments.plugin import find_plugin_lexers
23 from pygments.util import ClassNotFound, bytes 23 from pygments.util import ClassNotFound, bytes
24 24
25 25
26 __all__ = ['get_lexer_by_name', 'get_lexer_for_filename', 'find_lexer_class', 26 __all__ = ['get_lexer_by_name', 'get_lexer_for_filename', 'find_lexer_class',
27 'guess_lexer'] + LEXERS.keys() 27 'guess_lexer'] + list(LEXERS.keys())
28 28
29 _lexer_cache = {} 29 _lexer_cache = {}
30 30
31 31
32 def _load_lexers(module_name): 32 def _load_lexers(module_name):
42 def get_all_lexers(): 42 def get_all_lexers():
43 """ 43 """
44 Return a generator of tuples in the form ``(name, aliases, 44 Return a generator of tuples in the form ``(name, aliases,
45 filenames, mimetypes)`` of all know lexers. 45 filenames, mimetypes)`` of all know lexers.
46 """ 46 """
47 for item in LEXERS.itervalues(): 47 for item in LEXERS.values():
48 yield item[1:] 48 yield item[1:]
49 for lexer in find_plugin_lexers(): 49 for lexer in find_plugin_lexers():
50 yield lexer.name, lexer.aliases, lexer.filenames, lexer.mimetypes 50 yield lexer.name, lexer.aliases, lexer.filenames, lexer.mimetypes
51 51
52 52
55 Lookup a lexer class by name. Return None if not found. 55 Lookup a lexer class by name. Return None if not found.
56 """ 56 """
57 if name in _lexer_cache: 57 if name in _lexer_cache:
58 return _lexer_cache[name] 58 return _lexer_cache[name]
59 # lookup builtin lexers 59 # lookup builtin lexers
60 for module_name, lname, aliases, _, _ in LEXERS.itervalues(): 60 for module_name, lname, aliases, _, _ in LEXERS.values():
61 if name == lname: 61 if name == lname:
62 _load_lexers(module_name) 62 _load_lexers(module_name)
63 return _lexer_cache[name] 63 return _lexer_cache[name]
64 # continue with lexers from setuptools entrypoints 64 # continue with lexers from setuptools entrypoints
65 for cls in find_plugin_lexers(): 65 for cls in find_plugin_lexers():
70 def get_lexer_by_name(_alias, **options): 70 def get_lexer_by_name(_alias, **options):
71 """ 71 """
72 Get a lexer by an alias. 72 Get a lexer by an alias.
73 """ 73 """
74 # lookup builtin lexers 74 # lookup builtin lexers
75 for module_name, name, aliases, _, _ in LEXERS.itervalues(): 75 for module_name, name, aliases, _, _ in LEXERS.values():
76 if _alias in aliases: 76 if _alias in aliases:
77 if name not in _lexer_cache: 77 if name not in _lexer_cache:
78 _load_lexers(module_name) 78 _load_lexers(module_name)
79 return _lexer_cache[name](**options) 79 return _lexer_cache[name](**options)
80 # continue with lexers from setuptools entrypoints 80 # continue with lexers from setuptools entrypoints
90 pattern, use ``analyze_text()`` to figure out which one is more 90 pattern, use ``analyze_text()`` to figure out which one is more
91 appropriate. 91 appropriate.
92 """ 92 """
93 matches = [] 93 matches = []
94 fn = basename(_fn) 94 fn = basename(_fn)
95 for modname, name, _, filenames, _ in LEXERS.itervalues(): 95 for modname, name, _, filenames, _ in LEXERS.values():
96 for filename in filenames: 96 for filename in filenames:
97 if fnmatch.fnmatch(fn, filename): 97 if fnmatch.fnmatch(fn, filename):
98 if name not in _lexer_cache: 98 if name not in _lexer_cache:
99 _load_lexers(modname) 99 _load_lexers(modname)
100 matches.append(_lexer_cache[name]) 100 matches.append(_lexer_cache[name])
126 126
127 def get_lexer_for_mimetype(_mime, **options): 127 def get_lexer_for_mimetype(_mime, **options):
128 """ 128 """
129 Get a lexer for a mimetype. 129 Get a lexer for a mimetype.
130 """ 130 """
131 for modname, name, _, _, mimetypes in LEXERS.itervalues(): 131 for modname, name, _, _, mimetypes in LEXERS.values():
132 if _mime in mimetypes: 132 if _mime in mimetypes:
133 if name not in _lexer_cache: 133 if name not in _lexer_cache:
134 _load_lexers(modname) 134 _load_lexers(modname)
135 return _lexer_cache[name](**options) 135 return _lexer_cache[name](**options)
136 for cls in find_plugin_lexers(): 136 for cls in find_plugin_lexers():
141 141
142 def _iter_lexerclasses(): 142 def _iter_lexerclasses():
143 """ 143 """
144 Return an iterator over all lexer classes. 144 Return an iterator over all lexer classes.
145 """ 145 """
146 for module_name, name, _, _, _ in LEXERS.itervalues(): 146 for module_name, name, _, _, _ in LEXERS.values():
147 if name not in _lexer_cache: 147 if name not in _lexer_cache:
148 _load_lexers(module_name) 148 _load_lexers(module_name)
149 yield _lexer_cache[name] 149 yield _lexer_cache[name]
150 for lexer in find_plugin_lexers(): 150 for lexer in find_plugin_lexers():
151 yield lexer 151 yield lexer

eric ide

mercurial