2010-11-23 28 views
10

私は、Webサービスを文書化するためにSphinxを使用しています。 SpinxがPygments経由で行うcode-blockディレクティブを使用して書式設定されたJSON Webレスポンスを表示したいが、JSONにPygmentsのシンタックスハイライターはありません。代わりに指定する言語は何ですか? HTML? JavaScript?JSONに使用するSphinxコードブロック言語

.. code-block:: javascript 

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

答えて

4

JSONはJavaScript、プレーンでシンプルです。 JSONは実際には "JavaScript Object Notation"の略です。

+0

うん、それを知っていた。他の人がスフィンクスのJSONマークアップのためにjavascript Pygmentsハイライターを使っているのか、それとも別の推奨される言語があるのか​​不思議です。 – JayhawksFan93

+0

GabrielはJSON構文がJavaScriptシンタックスの厳密なサブセットであると言っているので、JavaScript用の適切なシンタックスハイライターもJSONを処理します。 –

+0

ありがとうジョー、OPに明確にする:JSON特有のハイライト(JSON *が* JavaScriptなので)JavaScriptのハイライターは正しいものであり、JSONを強調表示するためのSphinxのオプションはありません。 –

5

JSONを解析するためにpygments javascriptを使用していてうれしかったです。はい、JSONはJavaScriptのレクサーによって解析できますが、JavaScriptの強調表示はJSON値に適用するとあまり役に立ちません。あなたは通常、未分化のテキストの巨大な塊を取得します。

私は良い解決策を見つけることができなかったので、JSON lexer for pygmentsを作成しました。私は現在、sphinxで作成されたPDF文書のJSONを強調表示するために使用しています。完璧ではありませんが、結果はjavascriptのレクサーよりもずっと便利です。私はそれが助けて欲しい

+0

pygments用のJSONレクサーがPygments> = 1.5になりましたが、いくつかのSphinxサポートも必要です。特にadd_lexer(http://sphinx-doc.org/ext)を呼び出すSphinx拡張を追加する必要がありますjsonの場合は/appapi.html#sphinx.application.Sphinx.add_lexer)(これはSphinxの最新バージョンでは必要ありません)。 –

3

スフィンクス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スフィンクスが拡張を有効にするには、次のいのために:

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'] 
6

私はスフィンクス1.4.2を使用していました「json」と呼ばれるPygmentsレクサーが含まれています。これは既定ですぐに利用できます。使用する:

.. code-block:: json 

    { 
     "key": "value", 
     "key2": "value2", 
     ... 
    } 
+0

実際Pygmentsバージョン1.5から利用可能です。 [ソース](http://pygments.org/docs/lexers/#pygments.lexers.data.JsonLexer) – tomasbedrich

関連する問題