Mau:基于Jinja的轻量级标记语言

您所在的位置:网站首页 jinja模板 Mau:基于Jinja的轻量级标记语言

Mau:基于Jinja的轻量级标记语言

#Mau:基于Jinja的轻量级标记语言| 来源: 网络整理| 查看: 265

Mau 是一种轻量级的标记语言,深受 AsciiDoc 的启发,使撰写博客文章或书籍变得轻而易举。如果您已经了解 Markdown 或 AsciiDoc,那么您已经知道 Mau 是哪种类型的软件,并且您将很快了解它的语法。

然而,Mau 的主要目标是提供一种_customisable_ 标记语言。虽然 Mau 的语法由其实现固定,但其输出是通过用户提供的模板创建的。此策略为用户提供了极大的灵活性,而不会增加复杂性。

我目前使用 Mau 为我的博客The Digital Cat写文章,并写我的书Clean Architectures in Python。如您所见,该系统已准备好生产,您可以立即开始使用它。

故事到此为止

Markdown 是一种很棒的格式,自从我开始写作以来,我在所有的博客文章中都使用了它。Pelican是我使用的静态站点生成器,支持开箱即用的 Markdown,因此上手非常容易,总体来说我有一个愉快的体验。

当关于清洁架构的书的想法开始在我脑海中形成时,对自助出版平台的快速调查将我带到了 LeanPub,它提供了一个基于 Markdown 方言的良好工具链,称为Markua。与 Markdown 非常相似,过渡对我来说是无缝的,我可以毫无问题地出版这本书的第一版。

与此同时,我在博客上的活动增加了,我开始觉得有必要在我的文章中添加一些使用 Markdown 不容易创建的功能,例如在代码块中添加文件名和标注或添加警告。当然,可以使用原始 HTML 添加此类内容,但这会弹出简单标记语法的泡沫,所以我对那个解决方案不满意。

当我开始编写本书的第二版时,也出现了同样的问题,还有一些额外的问题。由于这本书是免费的,我想使用相同的源代码来生成一个网站,并能够在生成的 HTML 和 PDF 中重用相同的功能。

我找不到使用 Markdown 创建提示和警告的好方法。最近,Python Markdown 增加了一个功能,可以为源代码指定文件名,但是生成的 HTML 不能轻易更改,很难通过 CSS 实现我想要的图形输出。于是,我开始研究其他项目。

我尝试了Pandoc,并花了一周的时间再次尝试学习称为 TeX 的黑魔法足以让我决定该系统不是我需要的。我与 TeX/LaTeX 的关系一直风风雨雨:虽然我很佩服这个系统,它的聪明才智,以及 TeX 背后的单人表演努力](https://yakshav.es/the-patron-saint-of-yakshaves/),但最终的结果是一头难以驯服的复杂野兽。它也非常无证!

我发现的第三个系统是AsciiDoc,它最初是一个 Python 项目,被放弃了一段时间,最终被 Dan Allen 用Asciidoctor复活。 AsciiDoc 有很多功能,我认为它优于 Markdown,但是 Asciidoctor 是一个 Ruby 程序,这让我很难使用它。此外,Asciidoctor 的标准输出是一个不错的单个 HTML 页面,但再次自定义它是一件痛苦的事情。我最终使用它创建了本书的站点,但是将我的 Google Analytics 代码和sitemap.xml添加到 HTML 中并非易事,更不用说自定义元素的外观了,比如告诫。

最后,我对 Asciidoctor 并不完全满意,我再次开始四处寻找是否有符合我要求的东西。

\u003du003d 我在找什么

简而言之,这就是我希望找到的:

一个简单的标记语法[Markdown, Markua, Asciidoctor]

我可以在本地运行的独立实现[Markdown, Asciidoctor]

可以从 Pelican [Markdown] 使用的 Python 实现

支持警告和标注[Asciidoctor]

PDF 输出[Asciidoctor]

高度可配置的 HTML 输出 []

如您所见,没有一个系统可以勾选所有框,并且它们都缺少一种轻松更改渲染输出的方法。

\u003du003d 我做了什么

由于没有现有的工具能满足我的要求,我做了像我这样的人在缺乏工具时所做的事情。我自己写的!

我一生都在研究编译器,尽管我绝对称不上专家。我在我的博客上有一个系列帖子在我的博客上我用 Python 编写了一个解释器,基于 Ruslan Spivak[(https://ruslanspivak.com/lsbasi-part1/)的[惊人的工作,所以我想我可能会尝试为 Asciidoctor 的语法创建一个 Python 解释器,因为最初AsciiDoc 代码无人维护(显然开发后来又开始了)。

一个月后,我有了一个可以与 Pelican 成功连接的工作工具,并用来渲染一些我已经用 Markdown 写过的帖子。我不认为该项目具有革命性,但老实说,我第一次看到 Mau 工作的那一天是我作为软件开发人员职业生涯中最美好的日子之一。

不过,此时的茅已经与最初的想法略有不同。

虽然最初我的目标是实现 AsciiDoctor 的语法,并保留了很多,但我借此机会在渲染方面尝试了不同的路径。已经在其他环境中成功使用了 Jinja,我有了使用 Jinja 模板来渲染 Mau 的输出的想法,这样用户既可以使用标准模板,也可以提供自己的模板,从而轻松自定义最终结果。

后来我写了一个访问者(一个渲染类),将 Mau 的输入转换为 AsciiDoctor 或 Markua,尽管它没有涵盖两种语言的所有功能,但它允许我使用 Mau 重写我的书并在线发布使用 Markua 输出来提供生成 PDF 的 Leanpub 的处理链。

\u003du003d 我们现在的位置

短篇小说是 Mau 工作,正如我已经提到的,它用于我的博客和我的书籍。毛的特点是

一个简单的标记语法

一个可以在任何支持Python3的系统上本地运行的独立实现

一个鹈鹕插件,可以让你使用Mau写博客文章和网站页面

完全支持大量标准 HTML 功能(段落、列表、标题等)以及一些高级功能,例如警告、代码标注、包含和脚注。

使用 Jinja 模板的极其可配置的输出

它缺少独立的 PDF 创建,但这可能会在未来出现。

我在写 Mau 时学到了很多东西,我很高兴整个想法被证明值得我投入时间。我很想知道其他人发现它有用!

您可以通过阅读Mau 书籍(清楚地用 Mau 编写)来了解如何安装和使用 Mau,并查看源代码。

感谢您给毛一试!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3