Ответ 1
Я использую Sphinx 1.4.2, который включает лексир Pygments, называемый json. По умолчанию это доступно из коробки. Использовать:
.. code-block:: json
{
"key": "value",
"key2": "value2",
...
}
Я использую Sphinx для документирования веб-службы. Я хотел бы показать отформатированный веб-ответ JSON, используя директиву кода-кода, который Spinx выполняет через Pygments, но JSON не имеет синтаксического маркера в Pygments. На каком языке вы указываете вместо этого? HTML? JavaScript?
.. code-block:: javascript
{
"name": "roger",
"score": 100
}
Я использую Sphinx 1.4.2, который включает лексир Pygments, называемый json. По умолчанию это доступно из коробки. Использовать:
.. code-block:: json
{
"key": "value",
"key2": "value2",
...
}
Я не был доволен использованием javascript pygments для разбора JSON. Да, JSON можно проанализировать с помощью javascript lexer, но подсветка javascript не очень полезна при применении к значению JSON. Обычно вы получаете гигантский кусок недифференцированного текста.
Поскольку я не мог найти хорошего решения, я создал JSON lexer для пигментов. Я использую его сейчас для выделения JSON в созданном PDF-документе сфинкса. Это не идеально, но результаты гораздо полезнее, чем с javascript lexer. Надеюсь, это поможет.
JSON - это JavaScript, простой и простой. JSON фактически означает "Обозначение объектов JavaScript".
Даже с 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']