自12月初和整个假期期间,GitHub的[Ryan Waldron](Dan Allen(其他贡献者(项目站点(代码仓库(^1 [^1]: Asciidoctor代码库起源于GitHub开发人员去年创造的一个原型,用来生成在[Git官方网站](Git手册页面

实施工作开始时,我们有两个核心目标:

  1. 在GitHub上改善git仓库和代码片段中AsciiDoc源文件的渲染效果。

  2. 通过提供该标记语言的首个兼容的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)是开发的更简单方式。

— Dag Wieers

可以这样理解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 命令安装 Asciidoctor RubyGem:

gem install asciidoctor

在 Fedora 上,你可以通过 RPM 安装包 (pending) 使用 yum 命令安装:

yum install rubygem-asciidoctor

现在你已经准备好开始使用 Asciidoctor 了! == 福利

Asciidoctor 是:

* 遵从 * 快速 * 安全 * 稳定的

试一试! ----

Rendered HTML Output

//// [discrete] Asciidoctor =========== 瑞安·沃尔德伦,丹·艾伦 ////

+

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.

== 安装

You can install the Asciidoctor RubyGem using the gem command:

gem install asciidoctor

On Fedora, you can install via an RPM package (pending) using the yum command:

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还提供了几个级别的安全性,进一步证明了它适用于服务器端部署的合理性。

超越Ruby

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进行渲染的。