Какой язык кодовых блоков Sphinx использовать для JSON - PullRequest
14 голосов
/ 23 ноября 2010

Я использую Sphinx для документирования веб-службы. Я хотел бы показать отформатированный веб-ответ JSON с использованием директивы code-block, которую Spinx делает через Pygments, но JSON не имеет подсветки синтаксиса в Pygments. Какой язык вы предлагаете мне указать вместо этого? HTML? JavaScript

.. code-block:: javascript

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

Ответы [ 5 ]

15 голосов
/ 01 июля 2016

Я использую Sphinx 1.4.2, который включает лексер Pygments под названием " json ". Это доступно из коробки по умолчанию. Использовать:

.. code-block:: json

    {
        "key": "value",
        "key2": "value2",
        ...
    }
5 голосов
/ 28 августа 2011

Я не был счастлив, используя JavaScript-фрагменты для анализа JSON.Да, JSON может быть проанализирован лексером javascript, но выделение javascript не очень полезно при применении к значению JSON.Обычно вы получаете гигантский шарик недифференцированного текста.

Поскольку я не смог найти хорошее решение, я создал JSON-лексер для фрагментов .Я использую его сейчас для выделения JSON в PDF-документе, созданном sphinx.Это не идеально, но результаты гораздо полезнее, чем с лексером javascript.Надеюсь, это поможет.

4 голосов
/ 26 ноября 2010

JSON - это JavaScript, простой и понятный. JSON фактически означает «нотация объектов JavaScript».

3 голосов
/ 31 мая 2013

Даже с 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())

Мой docs/conf.py для Sphinx имеет следующее для включения расширения:

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']
0 голосов
/ 21 июня 2018

В Sphinx по умолчанию предусмотрено несколько лексеров пигментов, выделенных для подсветки JSON, поэтому вы можете выбрать один из них:

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
    
...