19

Web サービスの文書化に Sphinx を使用しています。コード ブロック ディレクティブを使用してフォーマットされた JSON Web 応答を表示したいと思います。Spinx は Pygments を介して実行しますが、Pygments には JSON の構文ハイライターがありません。代わりにどの言語を指定することをお勧めしますか? HTML? JavaScript?

.. code-block:: javascript

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

5 に答える 5

24

「 json 」と呼ばれる Pygments lexer を含む Sphinx 1.4.2 を使用しています。これは、デフォルトですぐに使用できます。使用するには:

.. code-block:: json

    {
        "key": "value",
        "key2": "value2",
        ...
    }
于 2016-07-01T14:10:22.730 に答える
6

JSONの解析にpygments javascriptを使用することに満足していませんでした。はい、JSON は JavaScript レクサーによって解析できますが、JSON 値に適用された場合、JavaScript の強調表示はあまり役に立ちません。通常、区別されていないテキストの巨大な塊が表示されます。

良い解決策が見つからなかったので、pygments 用の JSON lexerを作成しました。現在、sphinx で作成された PDF ドキュメントで JSON を強調表示するために使用しています。完璧ではありませんが、JavaScript lexer よりもはるかに便利な結果が得られます。お役に立てば幸いです。

于 2011-08-28T04:41:04.553 に答える
6

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())

My docs/conf.pyfor 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']
于 2013-05-31T18:03:31.403 に答える
4

JSON は JavaScript であり、プレーンでシンプルです。実際、JSON は「JavaScript Object Notation」の略です。

于 2010-11-25T22:07:46.780 に答える