一个受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.texmd-blockspnw.pnw包含在主命名空间u''中。 块ltxheader,它包含它的名称,以及 可在latex-blocks.tex中找到。

pnw-doc.pnw包含一些用 latex。大多数情况下,它包括来自其他文件的块。大部分的 用markdown编写的文档可以在md-blocks中找到。

最后,通过调用

pnw -Rmain pnw-doc.pnw > pnw-doc.tex

PNW在BitbucketPyPi上。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java gradle无法解析配置的任何依赖项:类路径   来自远程服务的java错误字符串解析   java如何在Tomcat之外运行TomcatSpring/Struts 2Quartz任务?   将Java字节转换为Perl   Java选项:返回值或执行某些操作并继续循环   java如何从对象中获取变量?   postgresql自动部署web服务java和glassfish服务器4.1.1?   使用泛型的java Resteasy重写方法   在另一个用户登录后显示上一个用户的java数据   JSP(Java):编码字节数组并在JavaScript中使用,与C中相同#   Java:如何知道jar在Linux中的位置   java模拟已标记为可访问的私有方法的返回值   java无法理解滚动窗格   java Spring Boot Starter Web依赖项提供缺少工件的错误   java从SQL表创建json文件,然后能够查询该文件   java线程时钟对象   Java实践编程问题   多线程Java GUI未更改   GL30库中不存在intellij idea GLGEnVertexArray()。(JAVA LWJGL)   二进制文件在java中编辑二进制文件