自12月初和整个假期期间,GitHub的[Ryan Waldron](Dan Allen(其他贡献者(项目站点(代码仓库(^1 [^1]: Asciidoctor代码库起源于GitHub开发人员去年创造的一个原型,用来生成在[Git官方网站](Git手册页面。
实施工作开始时,我们有两个核心目标:
-
在GitHub上改善git仓库和代码片段中AsciiDoc源文件的渲染效果。
-
通过提供该标记语言的首个兼容的Ruby版本端口,将AsciiDoc带入Ruby世界。
在经过大量辛勤工作和彻底的安全审计后,我们非常激动地宣布……
Note
|
Asciidoctor 现在已部署 用于在 GitHub 上的 500多万个仓库 中渲染 AsciiDoc 标记。 |
Asciidoctor 0.1.0 也在 rubygems.org 上可用,并且可以通过 RubyGems 本地安装 (gem install asciidoctor
)。
关于AsciiDoc
AsciiDoc是一种轻量级标记语言,类似于Markdown。与Markdown不同,AsciiDoc支持撰写文章、技术手册和书籍所需的所有结构元素。包括Matthew McCullough、Tim Berglund和Matt Neuburg在内的几位O’Reilly作者,都使用它为那个标志性的技术图书馆写书。AsciiDoc完全能够作为DocBook的简写替代,它也能输出DocBook。
DocBook很不错,但(就像XML一样)它并不适合编辑或合并更改(人工操作)。使用AsciiDoc(可以完美转换为DocBook)是开发的更简单方式。
可以这样理解AsciiDoc与DocBook之间的关系:AsciiDoc之于DocBook,就像[RelaxNG Compact](http://relaxng.org/compact-tutorial-20030326.html#id2814005)之于XML Schema。使用AsciiDoc,你放弃了尖括号(即XML),但并没有放弃语义。
这是一个用AsciiDoc写的文件的例子,展示在它产生的输出之上。
你不会想看到这个例子的 DocBook 是怎样的。我们只能说,屏幕上没有足够的空间来显示给你看。
源文件 |
[source, asciidoc] ---- = Asciidoctor Ryan Waldron, Dan Allen Asciidoctor is a native Ruby processor for converting AsciiDoc source files and strings into HTML 5, DocBook 4.5 and other formats. == 安装 你可以使用 gem install asciidoctor 在 Fedora 上,你可以通过 RPM 安装包
(pending)
使用 yum install rubygem-asciidoctor 现在你已经准备好开始使用 Asciidoctor 了! == 福利 Asciidoctor 是: * 遵从 * 快速 * 安全 * 稳定的 试一试! ---- |
---|
Rendered HTML Output |
//// [discrete] Asciidoctor =========== 瑞安·沃尔德伦,丹·艾伦 //// + Asciidoctor+ Asciidoctor is a native Ruby processor for converting AsciiDoc source files and strings into HTML 5, DocBook 4.5 and other formats.== 安装 You can install the Asciidoctor RubyGem using the gem install asciidoctor On Fedora, you can install via an RPM package
(pending)
using the yum install rubygem-asciidoctor Now you are ready to start using Asciidoctor! == 福利 Asciidoctor 是: * 遵从 * 快速 * 安全 * 稳定的 试一试! |
The AsciiDoc project,由Python编写,是AsciiDoc语法的唯一实现……直到“医生”的到来。
Asciidoctor实现
Asciidoctor 是第一个用另一种语言实现 AsciiDoc 语法的项目,这里指的是 Ruby 语言。它是一个开源库(MIT 许可),作为 RubyGem 发布在 [rubygems.org](http://rubygems.org/gems/asciidoctor)。该项目最近迁移到了 [GitHub 上的 Asciidoctor 组织](https://github.com/asciidoctor)来支撑其快速增长。
Asciidoctor 力求完全符合 AsciiDoc 语法(有一些例外,在项目的 README 中有说明),但它不仅仅是一个克隆。
Asciidoctor 使用一套内置的 ERB 模板生成 HTML 5 和 DocBook 4.5 输出,这些输出在结构上等同于 AsciiDoc 所生成的内容。任何这些模板都可以被 Ruby 生态系统中任意模板语言编写的自定义模板所替换。自定义模板的渲染由 Tilt 模板抽象库处理,这是另一位 GitHub 用户 Ryan Tomayko 创建的项目。
利用 Ruby 技术栈并不是 Asciidoctor 的唯一好处。与 AsciiDoc Python 实现不同,Asciidoctor 通过离散步骤解析和渲染源文档。这使得文档的渲染变得可选,并且为 Ruby 程序提供了在与文档对象模型交互时提取、添加或替换文档中信息的机会,Asciidoctor 会组装这些文档对象模型。开发者可以利用 Ruby 编程语言的全部能力来操作文档中的内容。
没有Asciidoctor的全面介绍会忽略它的“速度”。尽管速度并非该项目的最初目标,但Asciidoctor已证明其速度惊人。它加载、解析和渲染文档的速度至少是Python实现的*25倍*。这对开发者的生产力是个好消息,也对GitHub或任何需要渲染AsciiDoc标记语言的服务器端应用来说是个好消息。Asciidoctor还提供了几个级别的安全性,进一步证明了它适用于服务器端部署的合理性。
Asciidoctor的使用不限于Ruby社区。多亏了http://jruby.org[JRuby],一种Ruby到JVM的移植,Asciidoctor也可以在Java应用程序中使用(最终还可能用于像Apache Maven这样的Java构建工具)。Asciidoctor还附带了一个由红帽公司的http://github.com/LightGuard[Jason Porter]编写的命令行界面(cli)。Asciidoctor的命令行界面,http://asciidoctor.org/man/asciidoctor[asciidoctor
],是AsciiDoc Python发行版中+asciidoc.py+脚本的替代品。
Asciidoctor和AsciiDoc的未来
AsciiDoc 的未来是光明的。尽管是一个历经十年的成熟标记语言,但AsciiDoc的采用从未如此强劲。开发者们对于如何改进和扩展Asciidoctor有很多[想法],其中一些可能会超出AsciiDoc的语法范畴。
-
如果你对使用AsciiDoc感兴趣,可以前往http://github.com[GitHub],在你的某个仓库或者gist中使用文件扩展名+.asciidoc+或+.adoc+创建一个新文件。
-
如果您对于为Asciidoctor做出贡献感兴趣,进而帮助推动AsciiDoc的发展,欢迎您的参与和反馈!
愉快地编写文档!
Note
|
这篇文章是用AsciiDoc编写并使用Asciidoctor进行渲染的。 |