处理具有元数据和中间件的文件目录
项目描述
# Metalsmyth
[](https://travis-ci.org/eyeseast/python-metalsmyth)
这是一个小库,用于处理带有中间件的文件目录。它基于[metalsmith](http://www.metalsmith.io/),它是内置的Node。此版本使用相同的三个步骤
1. 读取源目录中的所有文件。
2. 调用一系列插件来操作文件。
3. 将结果写入目标目录(或执行其他操作!)
每个插件都是一个简单的可调用对象,它接受一个包含文件的字典和一个`Stack`实例,并执行一些操作。它实际上不必操作(或返回)文件。每个文件都会解析YAML Frontmatter,文件路径作为键(相对于源目录)。
## 这有什么用?
我以构建新闻应用程序和互动故事为生,经常与其他记者合作,他们撰写文本、收集照片和编辑视频。这些内容需要格式化、清理、组织,并与其他数据结合等。然后需要将其发布到网上。
Metalsmyth是一种组织处理管道的方法,从原始文本到HTML(或其他格式)。我打算与[Tarbell](http://tarbell.io/)或其他静态站点生成器一起使用它。这也可以作为一个生成器单独使用。
默认包含一些插件
- 草稿:过滤掉`draft`为`true`的帖子
- 日期:将日期字段转换为Python `datetime.datetime`对象
- markdown:使用markdown将帖子内容转换为HTML
- 漂白:对帖子内容运行 `bleach.clean`
- 链接化:对帖子内容运行 `bleach.linkify`
## 安装
$ pip install metalsmyth
Metalsmyth 本身只需要 [Python Frontmatter][fm],它本身依赖于 [PyYAML][]。如果您想使用捆绑的插件,您将需要一些额外的库
$ pip install markdown # 用于 markdown 插件
$ pip install bleach # 用于 bleach 和 linkify 插件
$ pip install jinja2 # 用于 jinja 模板插件
$ pip install python-dateutil # 用于日期插件
[fm]: https://github.com/eyeseast/python-frontmatter
[PyYAML]: http://pyyaml.org
## 使用
```python
from metalsmyth import Stack
from metalsmyth.plugins.dates import Dates
from metalsmyth.plugins.markup import Bleach, Markdown
# 创建一个包含源目录和中间件的栈
stack = Stack('tests/markup',
Dates('date'),
Bleach(strip=True),
Markdown(output_format='html5')
)
# 获取处理后的文件
files = stack.run()
# 或构建到目标目录
stack.build('tests/tmp')
```
### 添加中间件
如果您在创建新栈时知道所有将使用的中间件函数,
则只需在初始化时将它们作为位置参数列出。
```python
stack = Stack('src', Markdown(), Jinja())
```
此外,还有一个 `stack.use` 装饰器可以将新函数推送到栈的末尾。
这对于不需要任何配置的一次性插件非常有用。例如,
一个特定项目可能需要确保 `stack` 实例始终知道它正在处理多少个文件。
```python
# 定义一个函数并将其推送到栈
@stack.use
def count_files(files, stack)
stack.metadata['count'] = len(files)
# 或使用预定义的中间件调用
stack.use(Markdown())
stack.use(Jinja())
stack.use(some_other_function)
```
最后,`Stack.middleware` 只是一个列表,因此您可以像编辑列表一样编辑它。
```python
stack = Stack('src')
stack.middleware = [
Bleach(),
Markdown(output_format='html5')
]
stack.middleware.append(Jinja())
```
[](https://travis-ci.org/eyeseast/python-metalsmyth)
这是一个小库,用于处理带有中间件的文件目录。它基于[metalsmith](http://www.metalsmith.io/),它是内置的Node。此版本使用相同的三个步骤
1. 读取源目录中的所有文件。
2. 调用一系列插件来操作文件。
3. 将结果写入目标目录(或执行其他操作!)
每个插件都是一个简单的可调用对象,它接受一个包含文件的字典和一个`Stack`实例,并执行一些操作。它实际上不必操作(或返回)文件。每个文件都会解析YAML Frontmatter,文件路径作为键(相对于源目录)。
## 这有什么用?
我以构建新闻应用程序和互动故事为生,经常与其他记者合作,他们撰写文本、收集照片和编辑视频。这些内容需要格式化、清理、组织,并与其他数据结合等。然后需要将其发布到网上。
Metalsmyth是一种组织处理管道的方法,从原始文本到HTML(或其他格式)。我打算与[Tarbell](http://tarbell.io/)或其他静态站点生成器一起使用它。这也可以作为一个生成器单独使用。
默认包含一些插件
- 草稿:过滤掉`draft`为`true`的帖子
- 日期:将日期字段转换为Python `datetime.datetime`对象
- markdown:使用markdown将帖子内容转换为HTML
- 漂白:对帖子内容运行 `bleach.clean`
- 链接化:对帖子内容运行 `bleach.linkify`
## 安装
$ pip install metalsmyth
Metalsmyth 本身只需要 [Python Frontmatter][fm],它本身依赖于 [PyYAML][]。如果您想使用捆绑的插件,您将需要一些额外的库
$ pip install markdown # 用于 markdown 插件
$ pip install bleach # 用于 bleach 和 linkify 插件
$ pip install jinja2 # 用于 jinja 模板插件
$ pip install python-dateutil # 用于日期插件
[fm]: https://github.com/eyeseast/python-frontmatter
[PyYAML]: http://pyyaml.org
## 使用
```python
from metalsmyth import Stack
from metalsmyth.plugins.dates import Dates
from metalsmyth.plugins.markup import Bleach, Markdown
# 创建一个包含源目录和中间件的栈
stack = Stack('tests/markup',
Dates('date'),
Bleach(strip=True),
Markdown(output_format='html5')
)
# 获取处理后的文件
files = stack.run()
# 或构建到目标目录
stack.build('tests/tmp')
```
### 添加中间件
如果您在创建新栈时知道所有将使用的中间件函数,
则只需在初始化时将它们作为位置参数列出。
```python
stack = Stack('src', Markdown(), Jinja())
```
此外,还有一个 `stack.use` 装饰器可以将新函数推送到栈的末尾。
这对于不需要任何配置的一次性插件非常有用。例如,
一个特定项目可能需要确保 `stack` 实例始终知道它正在处理多少个文件。
```python
# 定义一个函数并将其推送到栈
@stack.use
def count_files(files, stack)
stack.metadata['count'] = len(files)
# 或使用预定义的中间件调用
stack.use(Markdown())
stack.use(Jinja())
stack.use(some_other_function)
```
最后,`Stack.middleware` 只是一个列表,因此您可以像编辑列表一样编辑它。
```python
stack = Stack('src')
stack.middleware = [
Bleach(),
Markdown(output_format='html5')
]
stack.middleware.append(Jinja())
```
项目详情
下载文件
下载适用于您平台的应用程序文件。如果您不确定要选择哪一个,请了解更多关于 安装软件包 的信息。
源分发
metalsmyth-0.1.6.zip (22.9 kB 查看散列)
metalsmyth-0.1.6.tar.gz (11.9 kB 查看散列)