首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Daring Fireball: Markdown
CommonMark
Mou Markdown Editor for OS X
MacDown Open Source Markdown Editor
Marked
GitHub Flavored Markdown
V2EX  ›  Markdown

求助 Java , Python 解析 markdown 文本,现在有支持渲染代码高亮的库吗??

  •  
  •   aircjm · 149 天前 · 6320 次点击
    这是一个创建于 149 天前的主题,其中的信息可能已经有所发展或是发生改变。

    flexmark,commonmark 都只是把代码解析到标签里面,并不支持根据语言高亮代码,这个有现成的库支持吗??

    第 1 条附言  ·  149 天前
     <pre><code class="language-java">
    package com.vladsch.flexmark.samples;
    
    import com.vladsch.flexmark.util.ast.Node;
    import com.vladsch.flexmark.html.HtmlRenderer;
    import com.vladsch.flexmark.parser.Parser;
    import com.vladsch.flexmark.util.options.MutableDataSet;
    
    public class BasicSample {
        public static void main(String[] args) {
            MutableDataSet options = new MutableDataSet();
    
            // uncomment to set optional extensions
            //options.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create(), StrikethroughExtension.create()));
    
            // uncomment to convert soft-breaks to hard breaks
            //options.set(HtmlRenderer.SOFT_BREAK, &quot;&lt;br /&gt;\n&quot;);
    
            Parser parser = Parser.builder(options).build();
            HtmlRenderer renderer = HtmlRenderer.builder(options).build();
    
            // You can re-use parser and renderer instances
            Node document = parser.parse(&quot;This is *Sparta*&quot;);
            String html = renderer.render(document);  // &quot;&lt;p&gt;This is &lt;em&gt;Sparta&lt;/em&gt;&lt;/p&gt;\n&quot;
            System.out.println(html);
        }
    }
    </code></pre>
    
    

    这个是commonmark 解析的markdown的code代码块,实际上,我想解析类似下面这样的,最好直接在html里,不要单独css文件。

    第 2 条附言  ·  149 天前
    ```html
    <pre><code class="html hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"/path/to/styles/default.css"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"/path/to/highlight.pack.js"</span>&gt;</span><span class="undefined"></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="undefined">hljs.initHighlightingOnLoad();</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
    ```
    第 3 条附言  ·  149 天前
    因为需要在禁用 JavaScript 的环境下使用
    第 4 条附言  ·  123 天前

    最后解决了,使用python 和pandoc解决的。

    pypandoc.convert_text(context, 'html', format ='markdown_github', extra_args=['-s', '--highlight-style=breezeDark'])
    
    4 回复  |  直到 2019-03-22 15:35:10 +08:00
        1
    yukong   149 天前
    hightlight.js
        2
    aircjm   149 天前
    @yukong hightligh.js 是前端的吧,我想在服务器端进行渲染
        3
    youngce   149 天前
    代码高亮最终不也就是一堆 css 吗,你的意思是 css 都不要了?
        4
    aircjm   149 天前
    @youngce 其实就是代码块里面每个单词都单独解析成不同样式,而不是整个```代码块被一个 code 标签包裹
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4179 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 02:18 · PVG 10:18 · LAX 19:18 · JFK 22:18
    ♥ Do have faith in what you're doing.