哪种Sphinx代码块语言用于JSON

时间:2010-11-23 17:46:21

标签: pygments python-sphinx

我正在使用Sphinx来记录Web服务。我想使用代码块指令显示格式化的JSON Web响应,Spinx通过Pygments执行,但JSON在Pygments中没有语法高亮显示。您建议我指定哪种语言? HTML?的JavaScript?

.. code-block:: javascript

    {
      "name": "roger",
      "score": 100
    }

5 个答案:

答案 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