Mau:基于Jinja的轻量级标记语言 |
您所在的位置:网站首页 › jinja模板 › Mau:基于Jinja的轻量级标记语言 |
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 |