in lib/pygments/mentos.py [0:0]
def get_data(self, method, lexer, args, kwargs, text=None):
"""
Based on the method argument, determine the action we'd like pygments
to do. Then return the data generated from pygments.
"""
if kwargs:
formatter_name = kwargs.get("formatter", None)
opts = kwargs.get("options", {})
# Ensure there's a 'method' key before proceeeding
if method:
res = None
# Now check what that method is. For the get methods, pygments
# itself returns generators, so we make them lists so we can serialize
# easier.
if method == 'get_all_styles':
res = json.dumps(list(pygments.styles.get_all_styles()))
elif method == 'get_all_filters':
res = json.dumps(list(pygments.filters.get_all_filters()))
elif method == 'get_all_lexers':
res = json.dumps(list(pygments.lexers.get_all_lexers()))
elif method == 'get_all_formatters':
res = [ [ft.__name__, ft.name, ft.aliases] for ft in pygments.formatters.get_all_formatters() ]
res = json.dumps(res)
elif method == 'highlight':
try:
text = text.decode('utf-8')
except UnicodeDecodeError:
# The text may already be encoded
text = text
res = self.highlight_text(text, lexer, formatter_name, args, _convert_keys(opts))
elif method == 'css':
kwargs = _convert_keys(kwargs)
fmt = pygments.formatters.get_formatter_by_name(args[0], **kwargs)
res = fmt.get_style_defs(args[1])
elif method == 'lexer_name_for':
lexer = self.return_lexer(None, args, kwargs, text)
if lexer:
# We don't want the Lexer itself, just the name.
# Take the first alias.
res = lexer.aliases[0]
else:
_write_error("No lexer")
else:
_write_error("Invalid method " + method)
return res