【发布时间】:2017-01-30 07:40:08
【问题描述】:
我刚刚在我的 Django 1.10.4 应用程序中安装了precision_bbcode 1.2.6。
当我提供字符串时:
>>> s = """
[code]
for i in var:
print(var[i])
[/code]
"""
输出只是纯文本:
对于 var 中的 i: 打印(变量[i])
但是,如果我将 [i] 更改为 [i2] 它可以正常工作并按预期格式化文本。
我猜测precision_bbcode 认为[i] 与斜体文本有关(即使它被[code] 标签包围并且[i] 没有关联的结束标签)。 [b] 和可能任何其他可识别的标签也存在此行为
然后我尝试设置选项render_embedded = False,但我仍然得到相同的行为。
然后我尝试制作自己的“代码”标签:
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import HtmlFormatter
class PygmentsBBCodeTag(BBCodeTag):
name = 'code'
class Options:
strip = False
replace_links = False
render_embedded = False
transform_newlines = False
escape_html = False
def render(self, value, option=None, parent=None):
print(value)
return highlight(value, PythonLexer(), HtmlFormatter())
tag_pool.register_tag(PygmentsBBCodeTag)
得到了同样的结果。
更奇怪的是,在我的 PygmentsBBCodeTag 类中,每当 [i] 存在时,我注意到它从未被调用(因为未打印值)。
有没有什么方法可以告诉precision_bbcode 将[code] 标记之间的内容完全视为一个字符串,并忽略除了结束[/code] 标记之外的任何内容??
谢谢
【问题讨论】:
-
您应该将其作为错误报告给开发人员。
-
我看到作者是 Morgan Aubert - github.com/ellmetha 我应该联系他吗?还是有更好的地方?