一个受AntiWeb启发的文本处理和识字编程工具
pnw的Python项目详细描述
最新版本见Bitbucket。
pnw是一种应用广泛的文本处理工具。它可以 用于将不同来源的文本块编译为新文本 文件。与剪切和粘贴技术相比的优势在于 自动跟踪源文件。其次,我们提供 pandoc文档转换器的包装器。因此,文本块 可以从多种轻量级标记转换为多种轻量级标记 语言以及html和tex/latex。尽管识字编程 已经有点过时了,PNW可以作为一个有文化的 编程工具也是。不足为奇,PNW本身及其 文档使用PNW编写。PNW的灵感来自Noweb 并深受启发(甚至借用部分语法) antiweb。重要的 PNW的特点是支持 名称空间。这允许创建可重用的块库 以类似于python的dot符号语法导入和寻址 模块。
PNW文件是一个文本文件,带有定义命名文本块的标记。在一个 这类似于xml文件。标记可能隐藏在注释后面 字符,以便文件可以由另一个程序处理。 可以处理和呈现来自各种pnw文件的文本块 另一个PNW文件。
文档
文档是用latex编写的。编译 pdf pnw-doc.pdf运行:
make doc
从命令行。你也可以在 python包索引。提供了pnw-doc.pdf。我不知道 将其置于版本控制之下,因为它将不必要地 扩大回购。
示例
假设安装了pnw,从pnw的主目录 包打开一个交互式python会话,我建议使用 ipython,并写入
import pnw pnw.pnwimport('pnw.pnw','')
现在您可以浏览pnw.pnw源文件的pnw文档树 通过检查字典
pnw.chunks
要查看块的结构,只需打印它的repr
pnw.chunks['moduledoc']
要渲染它,请尝试
print pnw.chunks['moduledoc'].render(indent=0,depth=2,toformat='rst')
pnw源由一个文件pnw.pnw组成。它是一条工作的Python 包含隐藏在#注释字符后面的pnw标记的文件。到 生成我们调用的干净的python文件(比较main中的makefile 目录)
python ./pnw.pnw -F pnw.pnw > pnw.py
-F指令意味着整个文件被视为一个块 命名为u''。在为 第一次。
文档的主驱动程序文件是 doc目录。这是这个文件的头
#@chunk(main,format=latex) #@path(../..) #@path(..) #@import(latex-blocks.tex) #@import(md-blocks) #@import(pnw.pnw) #@include(ltxheader)
首先,整个文件被声明为名为main的块,即 latex格式化。然后我们将前两个父目录添加到 搜索导入路径。然后文件latex-blocks.tex, md-blocks,pnw.pnw包含在主命名空间u''中。 块ltxheader,它包含它的名称,以及 可在latex-blocks.tex中找到。
pnw-doc.pnw包含一些用 latex。大多数情况下,它包括来自其他文件的块。大部分的 用markdown编写的文档可以在md-blocks中找到。
最后,通过调用
pnw -Rmain pnw-doc.pnw > pnw-doc.tex