本文整理汇总了Python中pygments.lexers.get_lexer_by_name函数的典型用法代码示例。如果您正苦于以下问题:Python get_lexer_by_name函数的具体用法?Python get_lexer_by_name怎么用?Python get_lexer_by_name使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_lexer_by_name函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: add_code_style
def add_code_style(self, content):
"""
добавялем подсветку кода
"""
code_start = u"<pre><code>"
code_end = u"</code></pre>"
code_start_len = len(code_start)
is_code = False
_lexer = "text"
code = []
result = []
for line in content.splitlines():
if line.startswith(code_start):
is_code = True
_lexer = line[code_start_len:].strip()
elif line.endswith(code_end):
is_code = False
try:
lexer = get_lexer_by_name(_lexer, stripall=True)
except ValueError:
lexer = get_lexer_by_name("text", stripall=True)
formatter = HtmlFormatter()
result.append(
highlight(u"\n".join(i.replace("<", "<").replace(">", ">") for i in code), lexer, formatter)
)
code = []
elif is_code:
code.append(line)
else:
result.append(line)
return u"\n".join(result)
示例2: colorize
def colorize (self, sheet_content):
""" Colorizes cheatsheet content if so configured """
# only colorize if so configured
if 'CHEATCOLORS' not in os.environ:
return sheet_content
try:
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import TerminalFormatter
# if pygments can't load, just return the uncolorized text
except ImportError:
return sheet_content
first_line = sheet_content.splitlines()[0]
lexer = get_lexer_by_name('bash')
if first_line.startswith('```'):
sheet_content = '\n'.join(sheet_content.split('\n')[1:-2])
try:
lexer = get_lexer_by_name(first_line[3:])
except Exception:
pass
return highlight(sheet_content, lexer, TerminalFormatter())
示例3: setup
def setup(app):
app.add_domain(HTTPDomain)
try:
get_lexer_by_name('http')
except ClassNotFound:
app.add_lexer('http', HTTPLexer())
app.add_config_value('http_index_ignore_prefixes', [], None)
示例4: block_code
def block_code(self, text, lang):
try:
lexer = get_lexer_by_name(lang, stripall=True)
except:
lexer = get_lexer_by_name('text')
formatter = HtmlFormatter(cssclass='highlight {0}'.format(lexer.name.lower()))
return highlight(text, lexer, formatter)
示例5: __init__
def __init__(self, config):
super().__init__(config)
log.debug("Text Backend Init.")
if hasattr(self.bot_config, 'BOT_IDENTITY') and 'username' in self.bot_config.BOT_IDENTITY:
self.bot_identifier = self.build_identifier(self.bot_config.BOT_IDENTITY['username'])
else:
# Just a default identity for the bot if nothing has been specified.
self.bot_identifier = self.build_identifier('@errbot')
log.debug('Bot username set at %s.', self.bot_identifier)
self._inroom = False
self._rooms = []
self._multiline = False
self.demo_mode = self.bot_config.TEXT_DEMO_MODE if hasattr(self.bot_config, 'TEXT_DEMO_MODE') else False
if not self.demo_mode:
self.md_html = xhtml() # for more debug feedback on md
self.md_text = text() # for more debug feedback on md
self.md_borderless_ansi = borderless_ansi()
self.md_im = imtext()
self.md_lexer = get_lexer_by_name("md", stripall=True)
self.md_ansi = ansi()
self.html_lexer = get_lexer_by_name("html", stripall=True)
self.terminal_formatter = Terminal256Formatter(style='paraiso-dark')
self.user = self.build_identifier(self.bot_config.BOT_ADMINS[0])
self._register_identifiers_pickling()
示例6: process
def process(self, attributes, content, reason):
lexer_name = attributes.get('syntax', 'text')
try:
lexer = get_lexer_by_name(lexer_name)
except ValueError:
lexer = get_lexer_by_name('text')
return HTMLElement(highlight(content, lexer, get_formatter()))
示例7: test_get_lexers
def test_get_lexers():
# test that the lexers functions work
def verify(func, args):
x = func(opt='val', *args)
assert isinstance(x, lexers.PythonLexer)
assert x.options["opt"] == "val"
for func, args in [(lexers.get_lexer_by_name, ("python",)),
(lexers.get_lexer_for_filename, ("test.py",)),
(lexers.get_lexer_for_mimetype, ("text/x-python",)),
(lexers.guess_lexer, ("#!/usr/bin/python -O\nprint",)),
(lexers.guess_lexer_for_filename, ("a.py", "<%= @foo %>"))
]:
yield verify, func, args
for cls, (_, lname, aliases, _, mimetypes) in lexers.LEXERS.items():
assert cls == lexers.find_lexer_class(lname).__name__
for alias in aliases:
assert cls == lexers.get_lexer_by_name(alias).__class__.__name__
for mimetype in mimetypes:
assert cls == lexers.get_lexer_for_mimetype(mimetype).__class__.__name__
try:
lexers.get_lexer_by_name(None)
except ClassNotFound:
pass
else:
raise Exception
示例8: syntax_hl
def syntax_hl(src, lang=None, guess_lang=False, inline=False, code_wrap=False):
"""Highlight."""
css_class = 'highlight'
src = src.strip('\n')
try:
lexer = get_lexer_by_name(lang)
except ValueError:
try:
if guess_lang:
lexer = guess_lexer(src)
else:
lexer = get_lexer_by_name('text')
except ValueError:
lexer = get_lexer_by_name('text')
if inline:
formatter = SublimeInlineHtmlFormatter(
cssclass=css_class
)
elif code_wrap:
formatter = SublimeWrapBlockFormatter(
cssclass=css_class
)
else:
formatter = SublimeBlockFormatter(
cssclass=css_class
)
return highlight(src, lexer, formatter)
示例9: paste_lexer
def paste_lexer(pastename,lexmode=None):
global data, formatter
memory = Client(memcached)
database = Client(memcachedb)
bottle.response.content_type = "text/html;charset=UTF-8"
if bottle.request.environ['HTTP_X_FORWARDED_SSL'] == 'on':
proto = 'https'
else:
proto = 'http'
paste = msgpack.loads(get_data(memory,database,"paste:"+pastename) or "")
if paste:
if lexmode:
url="%s://%s/p%s/%s"%(proto,domain,pastename,lexmode)
else:
url="%s://%s/p%s"%(proto,domain,pastename)
rurl="%s://%s/rp%s"%(proto,domain,pastename)
if not paste[4]:
lexer_name = (lexmode or paste[2]).lower()
try:
lexer = get_lexer_by_name(lexer_name, stripall=True)
except:
lexer = get_lexer_by_name('text', stripall=True)
hlpaste = memory.get("hlcache:%s:%s" % (pastename, lexer_name))
if hlpaste == None:
hlpaste = highlight(paste[0].decode("utf-8"), lexer, formatter)
memory.set("hlcache:%s:%s" % (pastename, lexer_name),
hlpaste.encode("utf-8"))
else:
hlpaste = hlpaste.decode("utf-8")
return bottle.template('paste', paste=hlpaste, title=paste[1],
url=url, rurl=rurl, passwd=None, lexmode=lexer.name)
else:
if 'p' in bottle.request.params:
if sha256(bottle.request.params['p']).digest() == paste[4]:
lexer_name = (lexmode or paste[2]).lower()
try:
lexer = get_lexer_by_name(lexer_name, stripall=True)
except:
lexer = get_lexer_by_name('text', stripall=True)
hlpaste = memory.get("hlcache:%s:%s" % (pastename,
lexer_name))
if hlpaste == None:
hlpaste = highlight(paste[0].decode("utf-8"), lexer,
formatter)
memory.set("hlcache:%s:%s" % (pastename, lexer_name),
hlpaste.encode("utf-8"))
else:
hlpaste = hlpaste.decode("utf-8")
return bottle.template('paste', paste=hlpaste,
title=paste[1], url=url, rurl=rurl,
passwd=bottle.request.params['p'],
lexmode=lexer.name)
else:
return bottle.template("pasteauth", url=url, rurl=rurl,
passwd=None, incorrect=True)
else:
return bottle.template("pasteauth", url=url, rurl=rurl,
passwd=None, incorrect=False)
else:
raise HTTPError(404, "Paste not in database")
示例10: generate_pygments_tex_file
def generate_pygments_tex_file( input_file_path, output_file_path ):
if output_file_path is None:
inputf_no_ext = input_file_path.split(".")[0]
output_file_path = inputf_no_ext + ".tex"
print "Reading Notation 3 file: " + input_file_path
with open (input_file_path, "r") as input_file:
code = input_file.read()
# LatexFormatter( full = True ) may be useful to see the packages, color definitions, etc. required by the LaTeX document importing it
# linenos = True to show line numbers
linenos = not inputf_no_ext.endswith("nolinenos")
ext = input_file_path.split(".")[1]
lexer = None
if ext=="n3":
lexer = get_lexer_by_name("n3")
elif ext=="sparql":
lexer = get_lexer_by_name("sparql")
highlighted_code = highlight( code, lexer, LatexFormatter( linenos = linenos ) )
# super-ugly fix to hidde syntax errors.
# It would be better to simply fix the lesser
# I really hate setting the font here, but I wasn't able to do it in the main document :-S
highlighted_code = r"\expandafter\def\csname [email protected]@err\endcsname{}" + "\n{\small\n" + highlighted_code
highlighted_code += "\n}"
print "Generating pygmented file: " + output_file_path
with open (output_file_path, "w") as output_file:
output_file.write( highlighted_code )
示例11: highlight_code
def highlight_code(self, html):
BeautifulSoup.QUOTE_TAGS['code'] = None
soup = BeautifulSoup(html)
preblocks = soup.findAll('code')
for pre in preblocks:
if pre.has_key('class'):
try:
code = ''.join([unicode(item) for item in pre.contents])
if 'inline' in pre['class']:
lexer = lexers.get_lexer_by_name(pre['class'].split(' ')[0])
formatter = InlineHtmlFormatter()
code_hl = highlight(code, lexer, formatter)
pre.contents = [BeautifulSoup(code_hl)]
pre.name = 'span'
print "here"
print pre
else:
lexer = lexers.get_lexer_by_name(pre['class'])
formatter = formatters.HtmlFormatter(linenos='table')
code_hl = highlight(code, lexer, formatter)
pre.contents = [BeautifulSoup(code_hl)]
pre.name = 'div'
except:
#logging.debug(sys.exc_info())
#logging.debug(pre['class'])
break
return unicode(soup)
示例12: run
def run(self):
socket = self.context.socket(zmq.REP)
socket.connect('inproc://backend')
while True:
lang, code = socket.recv_multipart()
lang = lang.decode(encoding="UTF-8")
code = code.decode(encoding="UTF-8")
rv = ""
try:
try:
if lang == "gdb":
lex = GDBLexer(encoding="utf-8")
elif lang == "toml":
lex = TOMLLexer(encoding="utf-8")
else:
lex = get_lexer_by_name(lang, encoding="utf-8")
except ClassNotFound as err:
lex = get_lexer_by_name("text", encoding="utf-8")
rv = highlight(code, lex, self.formatter)
except ValueError as err:
rv = "Pygments Error: {}".format(err)
socket.send(rv)
socket.close()
示例13: view_paste
def view_paste(paste):
r = get_paste(paste)
lang = request.args.get('l') if 'l' in request.args else r.language
paste = r.code
lexer = None
if lang == None:
try:
lexer = guess_lexer(paste)
except ClassNotFound:
pass
if lexer is None:
try:
lexer = get_lexer_by_name(lang)
except:
abort(500, 'Invalid lexer: %s' % lang)
if lexer is None:
try:
lexer = get_lexer_by_name('text')
except:
abort(500, 'Invalid lexer: %s' % lang)
formatter = HtmlFormatter(linenos=True)#, cssclass='syntax')#, style='friendly')
h = pygments.highlight(paste, lexer, formatter)
pasteid = r.private_id if r.private_id else r.paste_id
return render_template('viewpaste.html', data=h, theme=get_theme(),
langs=LANGS, pasteid=pasteid, currlang=lexer.aliases[0])
示例14: __init__
def __init__(self, document):
self.document = document
self.tokens = []
self.offsets = []
self.end = 0 # up to where we lexed last
if document.location:
filename = document.location
try:
# HACK! overrides should come from settings...
if os.path.splitext(filename)[1] == '.html':
# assume django template
self.lexer = get_lexer_by_name('html+django',
stripnl=False,
encoding='utf8')
elif os.path.splitext(filename)[1] == '.py':
# otherwise we end up with the annoying NumPy lexer..
self.lexer = get_lexer_by_name('python',
stripnl=False,
encoding='utf8')
else:
self.lexer = get_lexer_for_filename(filename,
stripnl=False,
encoding='utf8')
except ClassNotFound:
self.lexer = None
else:
self.lexer = None
示例15: colorize
def colorize(language, title, text):
"""Colorize the text syntax.
Guess the language of the text and colorize it.
Returns a tuple containing the colorized text and the language name.
"""
formatter = HtmlFormatter(
linenos=True, style=PygmentsStyle, noclasses=True, nobackground=True)
#Try to get the lexer by name
try:
lexer = get_lexer_by_name(language.lower())
return highlight(text, lexer, formatter), lexer.name
except LexerNotFound:
pass
#Try to get the lexer by filename
try:
lexer = get_lexer_for_filename(title.lower())
return highlight(text, lexer, formatter), lexer.name
except LexerNotFound:
pass
#Try to guess the lexer from the text
try:
lexer = guess_lexer(text)
if lexer.analyse_text(text) > .3:
return highlight(text, lexer, formatter), lexer.name
except LexerNotFound:
pass
#Fallback to the plain/text lexer
lexer = get_lexer_by_name('text')
return highlight(text, lexer, formatter), lexer.name