コード例 #1
0
def block_code(text, lang, inlinestyles=False, linenos=False):
    '''
    markdown代码高亮
    :param text:
    :param lang:
    :param inlinestyles:
    :param linenos:
    :return:
    '''
    if not lang:
        text = text.strip()
        return u'<pre><code>%s</code></pre>\n' % mistune.escape(text)

    try:
        lexer = get_lexer_by_name(lang, stripall=True)
        formatter = html.HtmlFormatter(
            noclasses=inlinestyles, linenos=linenos
        )
        code = highlight(text, lexer, formatter)
        if linenos:
            return '<div class="highlight">%s</div>\n' % code
        return code
    except BaseException:
        return '<pre class="%s"><code>%s</code></pre>\n' % (
            lang, mistune.escape(text)
        )
コード例 #2
0
 def block_code(self, code, lang=None):
     if lang and lang != 'cmd' and lang != 'yml' and lang != 'conf' and lang != 'sbtshell' and lang != 'commandline' and lang != 'shell script':
         lexer = get_lexer_by_name(lang, stripall=True)
         formatter = html.HtmlFormatter()
         return highlight(code, lexer, formatter)
     return '<pre><code class="language-plaintext">' + mistune.escape(
         code) + '</code></pre>'
コード例 #3
0
 def block_code(self, code, language=None):
     if language:
         lexer = get_lexer_by_name(language, stripall=True)
         formatter = pygments_html.HtmlFormatter()
         highlighted = highlight(code, lexer, formatter)
         return highlighted
     return '<pre><code>' + mistune.escape(code) + '</code></pre>'
コード例 #4
0
 def block_code(self, code, lang):
     if not lang:
         return '\n<pre><code>%s</code></pre>\n' % \
             mistune.escape(code)
     lexer = get_lexer_by_name(lang, stripall=True)
     formatter = html.HtmlFormatter()
     return highlight(code, lexer, formatter)
コード例 #5
0
ファイル: pygments.py プロジェクト: pleiszenburg/yabs
def render_code(code: str, lang: str) -> str:

    return highlight(
        code=code,
        lexer=get_lexer_by_name(lang, stripall=True),
        formatter=html.HtmlFormatter(),
    )
コード例 #6
0
ファイル: custom_renderer.py プロジェクト: markkun/QMarkDown
 def block_code(self, code, language=None):
     if not language:
         return "\n<pre><code>{}</code></pre>\n".format(
             mistune.escape(code))
     lexer = get_lexer_by_name(language, stripall=True)
     formatter = html.HtmlFormatter()
     return highlight(code, lexer, formatter)
コード例 #7
0
 def block_code(self, code, lang):
     if not lang:
         return '\n<pre style="background:#d7d9dd;"><code>%s</code></pre>\n' % \
             mistune.escape(code)
     lexer = get_lexer_by_name(lang, stripall=True)
     formatter = html.HtmlFormatter(linenos=True, cssclass="source")
     return "<style>" + formatter.get_style_defs() + "</style>" + highlight(
         code, lexer, formatter)
コード例 #8
0
ファイル: build_docs.py プロジェクト: Hammerspoon/hammerspoon
 def block_code(self, code, lang=None):
     if not lang:
         return '\n<pre><code>%s</code></pre>\n' % \
             mistune.escape(code)
     #print("BLOCK_CODE:\nCODE:%s\nLANG: %s\n======" % (code, lang))
     lexer = get_lexer_by_name(lang, stripall=True)
     formatter = html.HtmlFormatter()
     return highlight(code, lexer, formatter)
コード例 #9
0
 def block_code(self, code, lang):
     if not lang:
         return '\n<pre><code>%s</code></pre>\n' % \
             mistune.escape(code)
     lexer = get_lexer_by_name(lang, stripall=True)
     formatter = html.HtmlFormatter()
     soup = BS(highlight(code, lexer, formatter), 'html.parser')
     soup.pre['class'] = 'highlight'
     return str(soup)
コード例 #10
0
ファイル: utility.py プロジェクト: ReynoK/Kirako
 def block_code(self, code, lang):
     if not lang:
         lexer = guess_lexer(code, stripall=True)
     else:
         try:
             lexer = get_lexer_by_name(lang, stripall=True)
         except ClassNotFound as e:
             lexer = guess_lexer(code, stripall=True)
     formatter = html.HtmlFormatter(linenos=True)
     return highlight(code, lexer, formatter)
コード例 #11
0
 def block_code(self, code, lang):
     if lang == 'math':
         return '\n%s\n' % mistune.escape(code)
     if not lang:
         return '\n<pre><code>%s</code></pre>\n' % \
             mistune.escape(code)
     lexer = get_lexer_by_name(lang, stripall=True)
     formatter = html.HtmlFormatter(linenos='table')
     # other option for formatter: http://pygments.org/docs/formatters/
     return highlight(code, lexer, formatter)
コード例 #12
0
ファイル: plugins.py プロジェクト: ray1210/myblog
 def block_code(self, code, lang):
     if not lang:
         lang = 'bash'
     try:
         lexer = get_lexer_by_name(lang, stripall=True)
     except ClassNotFound as e:
         print('lang {} not found from lexer'.format(lang))
         return '\n<pre><code>%s</code></pre>\n' % mistune.escape(code)
     formatter = html.HtmlFormatter(cssclass='codehilite')
     return highlight(code, lexer, formatter)
コード例 #13
0
ファイル: formatter.py プロジェクト: redimp/otterwiki
 def block_code(self, code, lang):
     if not lang:
         return '\n<pre><code>%s</code></pre>\n' % \
             mistune.escape(code.strip())
     try:
         lexer = get_lexer_by_name(lang, stripall=True)
     except ClassNotFound:
         return '\n<pre><code>%s\n%s</code></pre>\n' % \
             (mistune.escape(lang.strip()), mistune.escape(code.strip()))
     formatter = html.HtmlFormatter(classprefix=".highlight ")
     return highlight(code, lexer, formatter)
コード例 #14
0
ファイル: template.py プロジェクト: suqi/mdpress
 def block_code(self, code, lang_desc):
     if not lang_desc:
         return '\n<pre><code>%s</code></pre>\n' % \
             mistune.escape(code)
     lang_split = lang_desc.split(":")
     lang = lang_split[0]
     lexer = get_lexer_by_name(lang, stripall=True)
     formatter = html.HtmlFormatter(linenos=True,
                                    style=current_app.config.get(
                                        "HIGHLIGHT_STYLE", "default"))
     return highlight(code, lexer, formatter)
コード例 #15
0
 def block_code(self, code, lang=None):
     if not lang:
         # language type is not specified, use default method.
         return super(CodeContentRenderer, self).block_code(code, lang)
     try:
         # try to get lexer
         lexer = get_lexer_by_name(lang, stripall=True)
         formatter = html.HtmlFormatter(style='fruity')
         return highlight(code, lexer, formatter)
     except ClassNotFound:
         return super(CodeContentRenderer, self).block_code(code, lang)
コード例 #16
0
 def block_code(self, code, lang):
     if not lang:
         return super().block_code(code, lang)
     if lang.lower() == 'math':
         return "<p>$$ {} $$</p>".format(mistune.escape(code))
     try:
         lexer = get_lexer_by_name(lang, stripall=True)
         formatter = html.HtmlFormatter()
         return '\n<code>%s</code>\n' % highlight(code, lexer, formatter)
     except pygments.util.ClassNotFound as e:
         return super().block_code(code, lang)
コード例 #17
0
    def block_code(self, code, lang=None):

        if lang:
            try:
                lexer = get_lexer_by_name(lang, stripall=True)
                formatter = html.HtmlFormatter()
                return highlight(code, lexer, formatter)
            except:
                return self.fallback(code, lang)
        else:
            return self.fallback(code, lang)
コード例 #18
0
ファイル: constants.py プロジェクト: Jack-Gledhill/imago
    def block_code(self, 
                   code: str, 
                   lang=None):
        if lang:
            lexer = get_lexer_by_name(lang, stripall=True)
            formatter = html.HtmlFormatter(linenos=True, 
                                           full=True,
                                           style=config.code_style)
            return highlight(code, lexer, formatter)

        return "<pre><code>" + escape(code) + "</code></pre>"
コード例 #19
0
def process(infile, outfile, fmt):
    func = {
        'docbook':
        process_docbook,
        'html':
        lambda infile, outfile: process_simple(
            infile, outfile,
            html.HtmlFormatter(full=True, cssfile="syntax-highlighting.css"))
    }.get(fmt)
    if not func:
        raise KeyError(f"fmt {fmt} for supported")
    return func(infile, outfile)
コード例 #20
0
    def block_code(self, code, lang):
        if not lang:
            return '\n<pre><code>%s</code></pre>\n' % \
                mistune.escape(code)
        try:
            lexer = get_lexer_by_name(lang, stripall=True)
        except pygments.util.ClassNotFound:
            return '\n<pre><code>%s</code></pre>\n' % \
                mistune.escape(code)

        formatter = html.HtmlFormatter()
        return pygments.highlight(code, lexer, formatter)
コード例 #21
0
ファイル: views.py プロジェクト: LoonLi/flask-blog
 def block_code(self, code, lang):
     if not lang:
         return '\n<pre><code>%s</code></pre>\n' % \
             mistune.escape(code)
     try:
         lexer = get_lexer_by_name(lang, stripall=True)
         formatter = html.HtmlFormatter()
         text = highlight(code, lexer, formatter)
     except Exception as e:
         text = '\n<pre><code>%s</code></pre>\n' % \
                mistune.escape(code)
     return text
コード例 #22
0
ファイル: models.py プロジェクト: notsag/club-jdr.fr
 def block_code(self, code, lang):
     """
     Get the language indicated in each fenced code block. Get the
     appropriate Pygments lexer based on this language and parse code
     accordingly into HTML format. If not language is detected, use vanilla
     <code> blocks.
     """
     if not lang:
         return "\n<pre>%s</pre>\n" % mistune.escape(code)
     lexer = get_lexer_by_name(lang, stripall=True)
     formatter = html.HtmlFormatter()
     return highlight(code, lexer, formatter)
コード例 #23
0
 def block_code(self, code, language=None):
     if language:
         lexer = get_lexer_by_name(language, stripall=True)
         formatter = pygments_html.HtmlFormatter()
         highlighted = highlight(code, lexer, formatter)
         highlighted_soup = bs4.BeautifulSoup(highlighted, "html.parser")
         for code_soup_element in highlighted_soup.find_all("span"):
             if code_soup_element.has_attr("class"):
                 code_soup_element["class"] = ["pl-" + code_soup_element["class"][0]]
         highlighted_soup.find("div")["class"].append("highlight-source-" + language.replace("+", "p"))
         return highlighted_soup.__str__()
     return '<pre><code>' + mistune.escape(code) + '</code></pre>'
コード例 #24
0
ファイル: codehilite.py プロジェクト: gooofy/aqb
 def render_fenced_code(self, element):
     code = element.children[0].children
     options = CodeHiliteRendererMixin.options.copy()
     options.update(_parse_extras(getattr(element, "extra", None)))
     if element.lang:
         try:
             lexer = get_lexer_by_name(element.lang, stripall=True)
         except ClassNotFound:
             lexer = guess_lexer(code)
     else:
         lexer = guess_lexer(code)
     formatter = html.HtmlFormatter(**options)
     return highlight(code, lexer, formatter)
コード例 #25
0
 def block_code(self, code, lang=None):
     if lang == 'dot':
         self.slide_vo.dot = code
         return code
     else:
         self.slide_vo.code = code
         self.slide_vo.lang = lang
     if not lang:
         return '\n<pre><code>%s</code></pre>\n' % \
                mistune.escape(code)
     lexer = get_lexer_by_name(lang, stripall=True)
     formatter = html.HtmlFormatter()
     return highlight(code, lexer, formatter)
コード例 #26
0
    def block_code(self, code, lang=None):
        def no_highlight():
            escaped = mistune.escape(code)
            return f"\n<pre><code>{escaped}</code></pre>\n"

        if not lang:
            return no_highlight()

        try:
            lexer = get_lexer_by_name(lang, stripall=True)
            formatter = html.HtmlFormatter()
            return highlight(code, lexer, formatter)
        except ClassNotFound:
            return no_highlight()
コード例 #27
0
 def block_code(self, code, lang=None):
     print("hello")
     if not lang:
         lang = 'text'
     try:
         lexer = get_lexer_by_name(lang, stripall=True)
     except:
         lexer = get_lexer_by_name('text', stripall=True)
     formatter = html.HtmlFormatter()
     return "{open_block}{formatted}{close_block}".format(
         open_block="<div class='code-highlight'>"
         if lang != 'text' else '',
         formatted=highlight(code, lexer, formatter),
         close_block="</div>" if lang != 'text' else '')
コード例 #28
0
def block_code(text, lang, inline_styles=False, linenos=False):
    if not lang:
        text = text.strip()
        return u'<pre><code>%s</code></pre>\n' % escape(text)

    try:
        lexer = get_lexer_by_name(lang, stripall=True)
        formatter = html.HtmlFormatter(noclasses=inline_styles,
                                       linenos=linenos)
        code = highlight(text, lexer, formatter)
        if linenos:
            return '<div class="highlight">%s</div>\n' % code
        return code
    except:
        return '<pre class="%s"><code>%s</code></pre>\n' % (lang, escape(text))
コード例 #29
0
 def POST(self):
     data = web.input()
     code = data.code
     language = data.lang
     if language == 'python':
         from pygments.lexers.python import PythonLexer
         lexer = PythonLexer()
     elif language == 'php':
         from pygments.lexers.php import PhpLexer
         lexer = PhpLexer()
     elif language == 'java':
         from pygments.lexers.jvm import JavaLexer
         lexer = JavaLexer()
     elif language == 'javascript':
         from pygments.lexers.javascript import JavascriptLexer
         lexer = JavascriptLexer()
     elif language == 'html':
         from pygments.lexers.html import HtmlLexer
         lexer = HtmlLexer()
     elif language == 'cpp':
         from pygments.lexers.c_cpp import CppLexer
         lexer = CppLexer()
     elif language == 'shell':
         from pygments.lexers.shell import ShellSessionLexer
         lexer = ShellSessionLexer()
     elif language == 'matlab':
         from pygments.lexers.matlab import MatlabLexer
         lexer = MatlabLexer()
     elif language == 'ruby':
         from pygments.lexers.ruby import RubyLexer
         lexer = RubyLexer()
     elif language == 'r':
         from pygments.lexers.r import RConsoleLexer
         lexer = RConsoleLexer()
     elif language == 'lisp':
         from pygments.lexers.lisp import SchemeLexer
         lexer = SchemeLexer()
     elif language == 'go':
         from pygments.lexers.go import GoLexer
         lexer = GoLexer()
     formatter = html.HtmlFormatter(linenos=False,
                                    encoding='utf-8',
                                    nowrap=False)
     hilighted_snippet = highlight(code, lexer, formatter)
     #return hilighted
     #return render.submit()
     return render.result(hilighted_snippet)
コード例 #30
0
ファイル: views.py プロジェクト: peergramming/peer-testing
def render_file(request, file, filename):
    """For a given @file path and @filename, pretty print the contents
    of the file as an HTML page using pygments"""
    mime = guess_type(filename, True)
    if mime[0] is None or mime[0].split('/')[0] != 'text':
        response = FileResponse(open(file, "rb"))
        response['Content-Type'] = str(guess_type(filename, False)[0])
        return response
    with open(file, mode="r", encoding="utf-8", errors='ignore') as open_file:
        content = open_file.read()
    lexermime = 'text/x-java' if mime[0] == 'text/x-java-source' else mime[0]
    lexer = pygments.lexers.get_lexer_for_mimetype(lexermime)
    detail = {
        "content": pyghi(content, lexer, pygform.HtmlFormatter(encoding='utf-8',linenos='table')),
        "filename": filename
    }
    return render(request, 'file_viewer/pretty_file.html', detail)