2013-09-05 6 views
5

वहां बहुत से वाक्यविन्यास हाइलाइटर्स हैं लेकिन कुछ मैंने नहीं देखा है जो क्वेरी स्ट्रिंग को हाइलाइट करने का समर्थन करता है!क्वेरी स्ट्रिंग्स की जावास्क्रिप्ट या PHP सिंटैक्स हाइलाइटिंग?

मैं अपने एपीआई को दस्तावेज करते समय उपयोग करने के लिए कुछ ढूंढ रहा हूं और अच्छी तरह से एक एपीआई होने के कारण बहुत सारे प्रश्न स्ट्रिंग शामिल हैं। इसलिए। क्वेरी स्ट्रिंग का समर्थन करने वाले अच्छे जावास्क्रिप्ट या PHP सिंटैक्स हाइलाइटर्स क्या हैं?

मैं Google code prettify, highlight.js, prismjs में ध्यान दिया है और कुछ अन्य लोगों लेकिन उनमें से कोई इस पर प्रकाश डाला करने में सक्षम होने लगते हैं:

/oauth/authorize?client_id=wG2X7q1qz74zdSbgiFkyL5JFOeloQwg2opfrPfaJ&response_type=code&redirect_uri=https%3A%2F%2Fmyapplication.com%2Foauth&scope=account%2Ccompetition%2Cvideos&state=d41d8cd98f00b204e9800998ecf8427e 

कौन सा रंग पर सभी चाबियाँ पर प्रकाश डाला जाना चाहिए, और सभी मूल्यों & साथ किसी अन्य रूप में = एक अलग रंग फिर से किया जा रहा है ... कुछ की तरह: '?' enter image description here

+1

डैम्ड अच्छा प्रश्न है। –

+1

... मुझे इसे दस्तावेज करना पड़ा और कभी भी पूछने का विचार नहीं किया ... असल में, क्यों क्रोम/फ़ायरफ़ॉक्स पूरे पता बार को रंग-कोड नहीं करता है? समान, लेकिन एक ही अनुरोध नहीं: https://bug184074.bugzilla.mozilla.org/attachment.cgi?id=143118 –

उत्तर

1

जहां तक ​​मैं की तरह चिंतित सभी पात्रों हूँ, '&' और '=' nam में प्रतिस्थापित किया जाना चाहिए एक उचित यूआरएल में es/मान। यह पार्स करने के लिए यह बहुत आसान बनाता है।

तो क्यों अपने दम पर कुछ का आविष्कार नहीं:

function parseQuery(query){ 
    parsed = query.split('?'); 
    if (parsed.length > 1) { 
     parsed[1] = parsed[1].split('&'); 
     for(i in parsed[1]) { 
      parsed[1][i] = parsed[1][i].split('='); 
     } 
    } 
    retStr = '<span class="path">' + parsed[0] + '</span>'; 
    if (parsed.length > 1) { 
     retStr += '<span class="qm">?</span>'; 
     first = true; 
     for(i in parsed[1]) { 
      if (first) { 
       first = false; 
      } else { 
       retStr += '<span class="amp">&</span>'; 
      } 
      retStr += '<span class="name">' + parsed[1][i][0] + '</span>'; 
      if (parsed[1][i].length > 1) { 
       retStr += '<span class="eq">=</span>' + 
       '<span class="value">' + parsed[1][i][1] + '</span>'; 
      } 
      if (parsed[1][i].length > 2) { 
       for (var j = 2; j < parsed[1][i].length; j++) { 
         retStr += '<span class="eq">=</span>'; 
         retStr += '<span class="error">' + parsed[1][i][j] + '</span>'; 
       } 
      } 
     } 
    } 
    if (parsed.length > 2) { 
     for (var i = 2; i < parsed.length; i++) { 
       retStr += '<span class="qm">?</span>'; 
       retStr += '<span class="error">' + parsed[i] + '</span>'; 
     } 
    } 
    return retStr; 
} 

http://jsfiddle.net/YqrpV/1/

+0

फ़ॉर्मेटिंग कारणों के लिए एकाधिक पंक्तियों पर हाइलाइटिंग करने में सहायता के लिए आप इसे कैसे बदल सकते हैं? जैसे http://jsfiddle.net/YqrpV/2/ – Hailwood

+1

में b.innerHTML को b.textContent में बदलते समय और यह ठीक काम करने लगता है। parseQuery एक स्ट्रिंग पर चल रहा है और आंतरिक HTML & http://jsfiddle.net/YqrpV/3/ – fsw

+0

डबल भयानक हो रहा था; मैंने आंतरिक पाठ की कोशिश की थी लेकिन वह काम नहीं कर रहा था टेक्स्ट सामग्री के बारे में नहीं पता था! – Hailwood

संबंधित मुद्दे