goldmark

用 Go 语言编写的 markdown 解析器
授权协议 MIT
开发语言 Google Go
所属分类 开发工具、 语法解析工具
软件类型 开源软件
地区 不详
投 递 者 方昊
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

goldmark 是用 Go 语言编写的 markdown 解析器。易于扩展,符合标准(CommonMark),结构合理。

特性:

  • 符合标准:goldmark 完全符合最新的 CommonMark 规范
  • 可扩展:可以轻松地在 goldmark 中完成添加 @username 提及语法等操作。可以添加 AST 节点、用于块级元素的解析器、用于内联级元素的解析器、用于段落的转换器、用于整个 AST 结构的转换器以及渲染器
  • 性能 :goldmark 的性能与 cmark 相当
  • 鲁棒性:goldmark 已通过模糊测试工具 go-fuzz 进行了测试
  • 内置扩展 :goldmark 附带常见的扩展名,例如表、删除线、任务列表和定义列表
  • 仅依赖标准库

goldmark 对 Markdown 文本的处理流程如下:

            <Markdown in []byte, parser.Context>
                           |
                           V
            +-------- parser.Parser ---------------------------
            | 1. Parse block elements into AST
            |   1. If a parsed block is a paragraph, apply 
            |      ast.ParagraphTransformer
            | 2. Traverse AST and parse blocks.
            |   1. Process delimiters(emphasis) at the end of
            |      block parsing
            | 3. Apply parser.ASTTransformers to AST
                           |
                           V
                      <ast.Node>
                           |
                           V
            +------- renderer.Renderer ------------------------
            | 1. Traverse AST and apply renderer.NodeRenderer
            |    corespond to the node type

                           |
                           V
                        <Output>
 相关资料
  • 本文向大家介绍解析Go语言编程中的struct结构,包括了解析Go语言编程中的struct结构的使用技巧和注意事项,需要的朋友参考一下 struct和C语言的很相似,模拟出class的功能,但是不完全的!没有构造函数等! struct的申明 go指针操作 如下我们要对数值进行改变,先要取内存地址,然后再内存地址上改变他的引用 匿名结构 (1)匿名内部结构的使用 (2)匿名类值不需要数据名称、在赋值

  • 本文向大家介绍深入解析Go语言编程中的递归使用,包括了深入解析Go语言编程中的递归使用的使用技巧和注意事项,需要的朋友参考一下 递归是以相似的方式重复项目的过程。同样适用于编程语言中,如果一个程序可以让你调用同一个函数被调用的函数,递归调用函数内使用如下。 Go编程语言支持递归,即要调用的函数本身。但是在使用递归时,程序员需要谨慎确定函数的退出条件,否则会造成无限循环。 递归函数是解决许多数学问题

  • 这篇文字基本是Tony Bai的这篇博客tony的翻版;只是使 内容和前两篇介绍TLS原理的OpenSSL操作的文字衔接。 单向验证身份 一般的HTTPS服务都是只需要客户端验证服务器的身份就好了。比如我们想访问 银行的网站,我们得确认那个网站真是我们要访问的银行的网站,而不是一个界 面类似的用来诱骗我们输入银行账号和密码的钓鱼网站。而银行网站并不需要通 过TLS验证我们的身份,因为我们会通过在网

  • 问题内容: 我正在尝试从C创建一个go字符串。我有指针和长度,所以如果我从go开始,可以调用该函数。 生成结构,所以我想知道是否可以直接使用它: 我在这里用它来控制我的生命。在随后作为参数传递给函数去: Go的垃圾收集器会尝试回收内存吗? 问题答案: Go的垃圾回收器不会尝试回收使用C内存分配器分配的内存。您所描述的应该是安全的。当然,您可能无法释放C内存,因为您不知道Go将在何时完成。

  • 本文向大家介绍深入解析Go语言编程中slice切片结构,包括了深入解析Go语言编程中slice切片结构的使用技巧和注意事项,需要的朋友参考一下 数组转换成切片 slice测试 我们看到这样的是slice_a指向Array_ori 其实是从c指向到k 我们用fmt.Println(cap(slice_a)) 结果肯定不是3 自己动手试一下下边这个   slice是指向底层的数组,如果多个slice指

  • 本文向大家介绍深入解析Go语言的io.ioutil标准库使用,包括了深入解析Go语言的io.ioutil标准库使用的使用技巧和注意事项,需要的朋友参考一下 今天我们讲解的是golang标准库里边的io/ioutil包–也就是package io/ioutil 1.ioutil.ReadDir(dirname string)这个函数的原型是这样的 func ReadDir(dirname strin

  • 问题内容: 我听到来自Google的关于Go编程语言的嗡嗡声。维基百科是这样描述的:“ Go旨在通过简化动态语言的编程来提供静态类型的编译语言的效率”。我当时在想,由于它是android制造商提供的一种语言,因此他们应该对创建android应用程序有一些支持。有没有可以从Go创建android应用程序的工具?使用“ SOMEDAY” android可能基于GO的假设来学习Go语言是否值得。 问题答

  • 本文向大家介绍Go语言method详解,包括了Go语言method详解的使用技巧和注意事项,需要的朋友参考一下 前面两章我们介绍了函数和struct,那你是否想过函数当作struct的字段一样来处理呢?今天我们就讲解一下函数的另一种形态,带有接收者的函数,我们称为method method 现在假设有这么一个场景,你定义了一个struct叫做长方形,你现在想要计算他的面积,那么按照我们一般的思路应