JSON

2010-11-23 30 views
10

için hangi Sfenks kod bloğu dilini kullanacağım Bir web hizmetini belgelemek için Sphinx kullanıyorum. Spinx'in Pygments ile yaptığı kod bloğu yönergesini kullanarak biçimlendirilmiş bir JSON web yanıtı göstermek istiyorum, ancak JSON'un Pygments'ta bir sözdizimi vurgulayıcı özelliği yok. Bunun yerine hangi dili önerdiğimi önerirsiniz? HTML? JavaScript?JSON

.. code-block:: javascript 

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

cevap

4

JSON, sade ve basit bir JavaScript'tür. JSON aslında "JavaScript Nesne Notasyonu" anlamına gelir.

+0

Evet, bunu biliyordum. Sadece başkalarının javascript Pygments vurgulayıcıyı Sphinx'te JSON işaretlemesi için mi yoksa başka bir önerilen dil mi kullanmış olduğunu merak ediyor. – JayhawksFan93

+0

Gabriel, JSON sözdiziminin JavaScript sözdiziminin katı bir alt kümesi olduğunu söyler, bu nedenle JavaScript için uygun sözdizimi vurgulayıcı JSON ile de ilgilenir. –

+0

Teşekkürler Joe, ve sadece OP açıklığa kavuşturmak için: JavaScript vurgulayıcı kullanmak için doğru olan, JSON-özgü vurgulayıcı (JSON * JavaScript * olduğundan) yoktur ve JSON vurgulamak için Sphinx daha iyi bir seçenek yoktur. –

5

JSON'u ayrıştırmak için pygments javascript kullanmaktan mutlu değildim. Evet, JSON javascript lexer tarafından ayrıştırılabilir, ancak bir JSON değerine uygulandığında javascript vurgulaması çok kullanışlı değildir. Genellikle devasa bir farksız metin bloğu alırsınız.

İyi bir çözüm bulamadığım için bir JSON lexer for pygments oluşturdum. Sfenks'in oluşturduğu PDF belgesinde JSON'u vurgulamak için şimdi kullanıyorum. Mükemmel değil, ama sonuçlar javascript lexer'dan çok daha faydalı. Umut ediyorum bu yardım eder.

+0

JSON lexer for pygments artık Pygments> = 1.5'dir, ancak bazı Sfenks desteğine de ihtiyaç duyulmaktadır, özellikle de add_lexer (http://sphinx-doc.org/ext) içeren bir Sphinx uzantısı eklemeniz gerekir. json için /appapi.html#sphinx.application.Sphinx.add_lexer) (bu, Sfenks'in en son sürümü için gerekli olmayabilir). –

3

Sphinx 1.2b1 ve Pygments 1.6 ile bile, bir şey yapmak için .. code-block:: json almak için add_lexer'ı çağırmam gerekiyordu. Ben bir uzantısı (docs/_ext/jsonlexer.py) aşağıdaki kod parçası koyarak sona erdi:

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

Benim uzantısını etkinleştirmek için aşağıdaki etmiştir Sfenks için 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

Ben Sphinx 1.4.2 kullanıyorum hangi "json" adı verilen bir Döşemeler sözlüğünü içerir. Bu, varsayılan olarak kutudan çıkar. Kullanmak için:

.. code-block:: json 

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

Aslında, bu sürümler, sürüm 1.5'ten başlayarak kullanılabilir. [Kaynak] (http://pygments.org/docs/lexers/#pygments.lexers.data.JsonLexer) – tomasbedrich