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

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

  •  
  •   aircjm · 2019-03-22 14:04:11 +08:00 · 13735 次点击
    这是一个创建于 2102 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  2019-03-22 15:33:38 +08:00
     <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 条附言  ·  2019-03-22 15:33:53 +08:00
    ```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 条附言  ·  2019-03-22 15:46:09 +08:00
    因为需要在禁用 JavaScript 的环境下使用
    第 4 条附言  ·  2019-04-17 16:07:43 +08:00

    最后解决了,使用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
    yukong
        1
    yukong  
       2019-03-22 14:19:19 +08:00
    hightlight.js
    aircjm
        2
    aircjm  
    OP
       2019-03-22 14:36:59 +08:00
    @yukong hightligh.js 是前端的吧,我想在服务器端进行渲染
    youngce
        3
    youngce  
       2019-03-22 14:47:18 +08:00
    代码高亮最终不也就是一堆 css 吗,你的意思是 css 都不要了?
    aircjm
        4
    aircjm  
    OP
       2019-03-22 15:35:10 +08:00
    @youngce 其实就是代码块里面每个单词都单独解析成不同样式,而不是整个```代码块被一个 code 标签包裹
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   876 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:47 · PVG 04:47 · LAX 12:47 · JFK 15:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.