高级BBCode类似标签解析器
项目描述
django-content-bbcode
=====================
BBCode类似解析器,用于Django应用程序。
此应用程序基于我在rk.edu.pl网站上使用的标签解析器。它与BBCode非常相似,但它被设计
以支持更高级的标签,提供更复杂的输出。我的使用示例
* 通过给定的slug将文章链接(根据文章是类别还是页面,可能应用不同的样式)
* 在文章中突出显示代码块
* 插入来自媒体的图片的缩略图(可选的alt文本、大小、标题等)
```
[rk:syntax lang="bash"]
export WORKON_HOME=~/Envs
mkdir -p $WORKON_HOME
source /usr/local/bin/virtualenvwrapper.sh
[/rk:syntax]
```
或者
```
[rk:art slug="some-article-slug"]
```
所以这是一个调用一些Python代码(甚至Django ORM)并返回动态输出的BBCode。
如何使用它
-------------
* 您可以从pypi安装它
```
pip安装django-content-bbcode
```
* 将 'content_bbcode' 添加到 INSTALLED_APPS
* 您将获得 'parse_content_bbcode' 模板标签,您可以在模板中使用它来解析应具有标签的文本
```
{% load parse_content_bbcode %}
{{ article.text|parse_content_bbcode|safe }}
```
代码中使用
-------------
您还可以手动解析标签
```
parser = cbcparser.ContentBBCodeParser()
result = parser.parse_tags(some_text)
```
设置和使用
-------------
您必须定义您要使用的标签的解析器。应用程序将在INSTALLED_APPS中的每个
应用程序中查找**tags.py**文件。在该文件中,它将查找**registered_tags**字典。
示例:https://github.com/riklaunim/django-content-bbcode/blob/master/content_bbcode_demo/demo_application/tags.py
字典键是标签的 *name*,例如 *rk:art* 的名称为 *art*。
字典值将是一个可调用对象,通常是一个接收两个参数的函数:字典列表和文本。
文本是我们需要替换标签的文本。
字典列表是给定标签的所有出现。
出现列表中的字典有少量键。
* 标签:我们需要替换的标签
* 属性:分配给标签的所有键值属性
* 代码:仅用于双标签(具有打开和关闭标签的标签)
```
[rk:mytag]代码[/rk:mytag]
```
通常您会遍历列表并将每个标签替换为某些内容。
最后,可调用对象应返回修改后的文本。
如果您想将 tags.py 放置在不同位置,则可以定义 ``CONTENT_BBCODE_SCAN_MODULES`` 为 'app_name': 'module_location' 的字典。
要更改默认标签前缀 ``rk``,请在 settings.py 中设置 ``CONTENT_BBCODE_PREFIX``。
运行测试
-------------
测试在 content_bbcode_demo.demo_application 中。克隆仓库并运行
```
pip install -r demo_requirements.txt
```
直接运行测试
```
python manage.py test content_bbcode_demo
```
使用 tox 在 Python 2.7 和 3.6 上进行测试
```
tox
```
项目状态
--------------
目前代码只是从我网站代码中提取出来后。它还需要一些重构/清理以及很可能是正则表达式改进,
但它可以工作,至少应该可以:)
我将尝试发布、提交一些真实的标签,例如 pygments 语法高亮显示等。
您可以在问题页面查看当前的待办事项列表。我也很乐意接受您的反馈、建议和拉取请求:)
致谢
-------
* 标签加载程序受到了 https://github.com/pozytywnie/django-javascript-settings 配置加载程序的启发
=====================
BBCode类似解析器,用于Django应用程序。
此应用程序基于我在rk.edu.pl网站上使用的标签解析器。它与BBCode非常相似,但它被设计
以支持更高级的标签,提供更复杂的输出。我的使用示例
* 通过给定的slug将文章链接(根据文章是类别还是页面,可能应用不同的样式)
* 在文章中突出显示代码块
* 插入来自媒体的图片的缩略图(可选的alt文本、大小、标题等)
```
[rk:syntax lang="bash"]
export WORKON_HOME=~/Envs
mkdir -p $WORKON_HOME
source /usr/local/bin/virtualenvwrapper.sh
[/rk:syntax]
```
或者
```
[rk:art slug="some-article-slug"]
```
所以这是一个调用一些Python代码(甚至Django ORM)并返回动态输出的BBCode。
如何使用它
-------------
* 您可以从pypi安装它
```
pip安装django-content-bbcode
```
* 将 'content_bbcode' 添加到 INSTALLED_APPS
* 您将获得 'parse_content_bbcode' 模板标签,您可以在模板中使用它来解析应具有标签的文本
```
{% load parse_content_bbcode %}
{{ article.text|parse_content_bbcode|safe }}
```
代码中使用
-------------
您还可以手动解析标签
```
parser = cbcparser.ContentBBCodeParser()
result = parser.parse_tags(some_text)
```
设置和使用
-------------
您必须定义您要使用的标签的解析器。应用程序将在INSTALLED_APPS中的每个
应用程序中查找**tags.py**文件。在该文件中,它将查找**registered_tags**字典。
示例:https://github.com/riklaunim/django-content-bbcode/blob/master/content_bbcode_demo/demo_application/tags.py
字典键是标签的 *name*,例如 *rk:art* 的名称为 *art*。
字典值将是一个可调用对象,通常是一个接收两个参数的函数:字典列表和文本。
文本是我们需要替换标签的文本。
字典列表是给定标签的所有出现。
出现列表中的字典有少量键。
* 标签:我们需要替换的标签
* 属性:分配给标签的所有键值属性
* 代码:仅用于双标签(具有打开和关闭标签的标签)
```
[rk:mytag]代码[/rk:mytag]
```
通常您会遍历列表并将每个标签替换为某些内容。
最后,可调用对象应返回修改后的文本。
如果您想将 tags.py 放置在不同位置,则可以定义 ``CONTENT_BBCODE_SCAN_MODULES`` 为 'app_name': 'module_location' 的字典。
要更改默认标签前缀 ``rk``,请在 settings.py 中设置 ``CONTENT_BBCODE_PREFIX``。
运行测试
-------------
测试在 content_bbcode_demo.demo_application 中。克隆仓库并运行
```
pip install -r demo_requirements.txt
```
直接运行测试
```
python manage.py test content_bbcode_demo
```
使用 tox 在 Python 2.7 和 3.6 上进行测试
```
tox
```
项目状态
--------------
目前代码只是从我网站代码中提取出来后。它还需要一些重构/清理以及很可能是正则表达式改进,
但它可以工作,至少应该可以:)
我将尝试发布、提交一些真实的标签,例如 pygments 语法高亮显示等。
您可以在问题页面查看当前的待办事项列表。我也很乐意接受您的反馈、建议和拉取请求:)
致谢
-------
* 标签加载程序受到了 https://github.com/pozytywnie/django-javascript-settings 配置加载程序的启发
项目详情
关闭
django-content-bbcode-0.1.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f002726c9fecc2fa791edde149bd64c8bc8c43740a2759255b7415cf1865e11e |
|
MD5 | 6db2c9f210d7a2b0a3c2b232ef86d5a0 |
|
BLAKE2b-256 | 8b5ac0d918ee7921851aea0613f3b68c93d56dfbd5009ba4b284e04af928457e |