我正在使用Sphinx来记录Web服务。我想使用代码块指令显示格式化的JSON Web响应,Spinx通过Pygments执行,但JSON在Pygments中没有语法高亮显示。您建议我指定哪种语言? HTML?的JavaScript?
.. code-block:: javascript
{
"name": "roger",
"score": 100
}
答案 0 :(得分:15)
我正在使用Sphinx 1.4.2,其中包含名为“ json ”的Pygments词法分析器。默认情况下,这是开箱即用的。使用:
.. code-block:: json
{
"key": "value",
"key2": "value2",
...
}
答案 1 :(得分:5)
我不喜欢使用pygments javascript来解析JSON。是的,JSON可以由javascript词法分析器解析,但是当应用于JSON值时,javascript突出显示不是很有用。你通常会得到一大堆无差别的文字。
由于我找不到一个好的解决方案,我创建了一个JSON lexer for pygments。我现在用它来在sphinx创建的PDF文档中突出显示JSON。它并不完美,但结果比javascript lexer更有用。我希望它有所帮助。
答案 2 :(得分:4)
JSON是JavaScript,简单明了。 JSON实际上代表“JavaScript Object Notation”。
答案 3 :(得分:3)
即使使用Sphinx 1.2b1和Pygments 1.6,我也需要调用add_lexer来让.. code-block:: json
做任何事情。我最终将以下代码片段放入扩展(docs/_ext/jsonlexer.py
):
def setup(app):
# enable Pygments json lexer
try:
import pygments
if pygments.__version__ >= '1.5':
# use JSON lexer included in recent versions of Pygments
from pygments.lexers import JsonLexer
else:
# use JSON lexer from pygments-json if installed
from pygson.json_lexer import JSONLexer as JsonLexer
except ImportError:
pass # not fatal if we have old (or no) Pygments and no pygments-json
else:
app.add_lexer('json', JsonLexer())
对于Sphinx,我的docs/conf.py
具有以下功能以启用扩展程序:
import os
import sys
sys.path.insert(0, os.path.abspath('_ext'))
# Add any Sphinx extension module names here, as strings. They can be
# extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = ['jsonlexer']
答案 4 :(得分:0)
Sphinx默认提供多个专用于JSON突出显示的pygment词法分析器,因此您可以在此处选择一个:
http://pygments.org/docs/lexers/#lexers-for-data-file-format
pygments.lexers.data.JsonLexer(pygment v1.5 +)
用于JSON数据结构。
.. code-block:: json
pygments.lexers.data.JsonLdLexer(pygment v2.0 +)
用于JSON-LD链接的数据。
.. code-block:: json-ld
pygments.lexers.data.JsonBareObjectLexer(pygment v2.2 +)
用于JSON数据结构(缺少对象花括号)。
.. code-block:: json-object