go语言支持Markdown便捷器

1. 需要使用库:

转换Markdown语法:russross/blackfriday
查找Document的内容:PuerkitoBio/goquery
语法高亮:sourcegraph/syntaxhighlight
插入模块:html/template
执行外部命令:os/exec
文件操作:path/filepath
创建Web服务器:SimpleHTTPServer
解析.yml配置文件:gopkg.in/yaml.v2

2. 下载相关库

go get github.com/russross/blackfriday
go get github.com/PuerkitoBio/goquery
go get github.com/sourcegraph/syntaxhighlight

3. 简单实例

russross/blackfriday包

第三方库russross/blackfriday用于在golang中使用markdown语法

示例代码:

func main() {
    fileread, _ := ioutil.ReadFile("extra/blackfriday转换markdown/test.md")
    //转换Markdown语法,如将"#"转换为"<h1></h1>"
    subHtml := blackfriday.MarkdownCommon(fileread)
    subHtmlStr := string(subHtml)
    fmt.Println(subHtmlStr)
}
输出:

<h2>一、russross/blackfriday包</h2>

PuerkitoBio/goquery包

PuerkitoBio/goquery 这个库就实现了类似 jQuery 的功能,让你能方便的使用 Go 语言操作 HTML 文档

Document
Document 代表一个将要被操作的 HTML 文档,不过,和 jQuery 不同,它装载的是 DOM 文档的一部分。

type Document struct {
    *Selection
    Url *url.URL
    rootNode *html.Node // 文档的根节点
}

因为 Document 中内嵌了一个 Selection 类型,因此,Document 可以直接使用 Selection 类型的方法。提供有五种方法获取一个 Document 实例。

Selection

Selection 代表符合特定条件的节点集合。

type Selection struct {
    Nodes []*html.Node
    document *Document
    prevSel *Selection
}

一般地,得到了 Document 实例后,通过 Dcoument.Find 方法获取一个 Selection 实例,然后像 jQuery 一样使用链式语法和方法操作它。

Selection 类型提供的方法可以分为如下几大类

  • 类似函数的位置操作
  • 扩大 Selection 集合(增加选择的节点)
  • 过滤方法,减少节点集合
  • 循环遍历选择的节点
  • 修改文档
  • 检测或获取节点属性值
  • 查询或显示一个节点的身份
  • 在文档树之间来回跳转(常用的查找节点方法)

sourcegraph/syntaxhighlight包

syntaxhighlight包提供代码的语法高亮显示。 它目前使用独立于语言的词法分析器, 并在JavaScript,Java,Ruby,Python,Go和C上表现出色。

主要的AsHTML(src []byte) ([]byte, error)函数,输出就是HTML 与google-code-prettify相同的CSS类,因此任何样式表也应该适用于此包。

func main() {
   src := []byte(`
/* hello, world! */
var a = 3;

// b is a cool function
function b() {
  return 7;
}`)

   highlighted, err := syntaxhighlight.AsHTML(src)
   if err != nil {
      fmt.Println(err)
      os.Exit(1)
   }

   fmt.Println(string(highlighted))
}
输出

<span class="com">/* hello, world! */</span>
<span class="kwd">var</span> <span class="pln">a</span> <span class="pun">=</span> <span class="dec">3</span><span class="pun">;</span>

<span class="com">// b is a cool function</span>
<span class="kwd">function</span> <span class="pln">b</span><span class="pun">(</span><span class="pun">)</span> <span class="pun">{</span>
  <span class="kwd">return</span> <span class="dec">7</span><span class="pun">;</span>
<span class="pun">}</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值