JSON

2010-11-23 18 views
10

के लिए उपयोग करने के लिए कौन सी स्फिंक्स कोड-ब्लॉक भाषा मैं वेब सेवा दस्तावेज करने के लिए स्फिंक्स का उपयोग कर रहा हूं। मैं कोड-ब्लॉक निर्देश का उपयोग करके एक स्वरूपित जेएसओएन वेब प्रतिक्रिया दिखाना चाहता हूं, जो स्पिनक्स पाइगल्स के माध्यम से करता है, लेकिन जेएसओएन में पेंगल्स में सिंटैक्स हाइलाइटर नहीं है। आप किस भाषा का सुझाव देते हैं मैं इसके बजाय निर्दिष्ट करता हूं? एचटीएमएल? जावास्क्रिप्ट?JSON

.. code-block:: javascript 

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

उत्तर

4

JSON जावास्क्रिप्ट, सादा और सरल है। वास्तव में जेएसओएन "जावास्क्रिप्ट ऑब्जेक्ट नोटेशन" के लिए खड़ा है।

+0

हाँ, उसे पता था। बस सोच रहा है कि क्या दूसरों ने स्फिंक्स में जेएसओएन मार्कअप के लिए जावास्क्रिप्ट पाइगल्स हाइलाइटर का इस्तेमाल किया है या यदि कोई अन्य अनुशंसित भाषा थी। – JayhawksFan93

+0

गेब्रियल का कहना है कि जेएसओएन सिंटैक्स जावास्क्रिप्ट सिंटैक्स का सख्त सबसेट है, इसलिए जावास्क्रिप्ट के लिए कोई उचित वाक्यविन्यास हाइलाइटर जेएसओएन को भी संभाल देगा। –

+0

धन्यवाद जो, और ओपी को स्पष्ट करने के लिए: जावास्क्रिप्ट हाइलाइटर उपयोग करने के लिए सही है, कोई JSON- विशिष्ट हाइलाइटर नहीं है (क्योंकि JSON * है * जावास्क्रिप्ट), और JSON को हाइलाइट करने के लिए स्फिंक्स में कोई बेहतर विकल्प नहीं है। –

5

मैं जेएसओएन पार्सिंग के लिए पेज्स जावास्क्रिप्ट का उपयोग करके खुश नहीं था। हां, जेएसओएन को जावास्क्रिप्ट लेक्सर द्वारा पार्स किया जा सकता है, लेकिन JSON मान पर लागू होने पर जावास्क्रिप्ट हाइलाइटिंग बहुत उपयोगी नहीं है। आप आमतौर पर अविभाजित पाठ का एक विशाल ब्लॉब प्राप्त करते हैं।

चूंकि मुझे कोई अच्छा समाधान नहीं मिला, इसलिए मैंने JSON lexer for pygments बनाया। मैं इसका उपयोग अब स्पिनक्स में जेएसओएन को हाइलाइट करने के लिए पीडीएफ दस्तावेज बनाया गया है। यह सही नहीं है, लेकिन परिणाम जावास्क्रिप्ट लेक्सर के मुकाबले ज्यादा उपयोगी हैं। मुझे उम्मीद है यह मदद करेगा।

+0

पाइगल्स के लिए JSON लेक्सर अब पेंगल्स> = 1.5 में है, लेकिन कुछ स्पिंक्स समर्थन के लिए भी आवश्यकता है, विशेष रूप से आपको एक स्फिंक्स एक्सटेंशन जोड़ने की आवश्यकता है जो add_lexer (http://sphinx-doc.org/ext) को कॉल करता है japp के लिए /appapi.html#sphinx.application.Sphinx.add_lexer) (हालांकि यह स्फिंक्स के नवीनतम संस्करण के लिए आवश्यक नहीं हो सकता है)। –

3

स्फिंक्स 1.2 बी 1 और पाइगल्स 1.6 के साथ भी, मुझे कुछ भी करने के लिए .. code-block:: json प्राप्त करने के लिए add_lexer को कॉल करने की आवश्यकता थी। मैं एक विस्तार (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 का उपयोग कर रहा है जो "जेसन" नामक एक पेंगुले लेक्सर शामिल है। यह डिफ़ॉल्ट रूप से आउट-ऑफ-द-बॉक्स उपलब्ध है। उपयोग करने के लिए:

.. code-block:: json 

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

वास्तव में यह प्यूगल्स संस्करण 1.5 से शुरू हो रहा है। [स्रोत] (http://pygments.org/docs/lexers/#pygments.lexers.data.JsonLexer) – tomasbedrich