YAML - सिंटैक्स प्राइमिटिव

इस अध्याय में आप YAML में वाक्य रचना आदिम के निम्नलिखित पहलुओं के बारे में जानेंगे -

  • उत्पादन मापदंडों
  • इंडेंटेशन स्पेस
  • पृथक्करण स्थान
  • उपेक्षित रेखा उपसर्ग
  • लाइन तह

आइए प्रत्येक पहलू को विस्तार से समझें।

उत्पादन पैरामीटर

उत्पादन मापदंडों में मापदंडों का एक सेट और अनुमत मूल्यों की सीमा शामिल होती है जो एक विशिष्ट उत्पादन पर उपयोग की जाती हैं। उत्पादन मानकों की निम्नलिखित सूची YAML में उपयोग की जाती है -

खरोज

इसे चरित्र द्वारा निरूपित किया जाता है n या mचरित्र धारा इसमें शामिल ब्लॉकों के इंडेंटेशन स्तर पर निर्भर करती है। कई प्रोडक्शंस ने इन विशेषताओं को मापित किया है।

प्रसंग

इसके द्वारा निरूपित किया जाता है c। YAML संदर्भों के दो समूहों का समर्थन करता है:block styles तथा flow styles

अंदाज

इसे s द्वारा दर्शाया गया है। स्केलर सामग्री को पाँच शैलियों में से एक में प्रस्तुत किया जा सकता है:plain, double quoted and single quoted flow, literal and folded block.

chomping

इसके द्वारा निरूपित किया जाता है t। ब्लॉक स्केलर कई तंत्र प्रदान करते हैं जो ब्लॉक को ट्रिम करने में मदद करते हैं:strip, clip तथा keep। चोमिंग नई लाइन स्ट्रिंग्स को फॉर्मेट करने में मदद करता है। यह ब्लॉक शैली प्रतिनिधित्व का उपयोग किया जाता है। चॉम्पिंग प्रक्रिया संकेतक की मदद से होती है। संकेतक नियंत्रित करते हैं कि स्ट्रिंग की नई लाइनों के साथ क्या उत्पादन किया जाना चाहिए। के साथ नई कड़ियों को हटा दिया जाता है(-) ऑपरेटर और newlines के साथ जोड़ा जाता है (+) ऑपरेटर।

चोमिंग प्रक्रिया के लिए एक उदाहरण नीचे दिखाया गया है -

strip: |-
   text↓
clip: |
   text↓
keep: |+
   text↓

निर्दिष्ट YAML उदाहरण को पार्स करने के बाद आउटपुट निम्नानुसार है -

इंडेंटेशन स्पेस

YAML चरित्र स्ट्रीम में, इंडेंटेशन को शून्य या अधिक वर्णों द्वारा लाइन ब्रेक चरित्र के रूप में परिभाषित किया गया है। ध्यान रखने वाली सबसे महत्वपूर्ण बात यह है कि इंडेंटेशन में कोई टैब वर्ण नहीं होना चाहिए। इंडेंटेशन के पात्रों को कभी भी नोड की सामग्री जानकारी का हिस्सा नहीं माना जाना चाहिए। बेहतर समझ के लिए निम्नलिखित कोड देखें -

%YAML 1.1
---
!!map {
   ? !!str "Not indented"
   : !!map {
      ? !!str "By one space"
      : !!str "By four\n spaces\n",
      ? !!str "Flow style"
      : !!seq [
         !!str "By two",
         !!str "Still by two",
         !!str "Again by two",
      ]
   }
}

इंडेंटेशन के बाद आप जो आउटपुट देख सकते हैं वह इस प्रकार है -

{
   "Not indented": {
      "By one space": "By four\n spaces\n", 
      "Flow style": [
         "By two", 
         "Still by two", 
         "Again by two"
      ]
   }
}

पृथक्करण स्थान

YAML टोकन के बीच पृथक्करण के लिए अंतरिक्ष वर्ण का उपयोग करता है। सबसे महत्वपूर्ण बात यह है कि YAML में जुदाई में टैब वर्ण नहीं होना चाहिए।

निम्नलिखित कोड की जुदाई रिक्त स्थान के उपयोग से पता चलता है -

{ · first: · Sammy, · last: · Sosa · }
ऊपर दिखाया गया सिंटैक्स आपको निम्न आउटपुट देता है:
{
   "\u00b7 last": "\u00b7 Sosa \u00b7", 
   "\u00b7 first": "\u00b7 Sammy"
}

उपेक्षित रेखा उपसर्ग

खाली उपसर्ग में हमेशा स्केलर प्रकार के आधार पर इंडेंटेशन शामिल होता है जिसमें एक प्रमुख व्हाट्सएप भी शामिल होता है। सादे स्केलरों में कोई टैब वर्ण नहीं होना चाहिए। दूसरी ओर, उद्धृत स्केल में टैब वर्ण हो सकते हैं। ब्लॉक स्केलर पूरी तरह से इंडेंटेशन पर निर्भर करते हैं।

निम्न उदाहरण एक व्यवस्थित तरीके से उपेक्षित रेखा उपसर्ग के काम को दर्शाता है -

%YAML 1.1
---
!!map {
   ? !!str "plain"
   : !!str "text lines",
   ? !!str "quoted"
   : !!str "text lines",
   ? !!str "block"
   : !!str "text·®lines\n"
}

ब्लॉक स्ट्रीम के लिए प्राप्त आउटपुट इस प्रकार है -

{
   "plain": "text lines", 
   "quoted": "text lines", 
   "block": "text\u00b7\u00aelines\n"
}

लाइन तह

लाइन तह पठनीयता के लिए लंबी लाइनों को तोड़ने की अनुमति देता है। छोटी मात्रा में अधिक मात्रा का मतलब बेहतर पठनीयता है। लंबी तह के मूल शब्दार्थ को ध्यान में रखते हुए लाइन की तह हासिल की जाती है। निम्नलिखित उदाहरण रेखा को मोड़ना दर्शाता है -

%YAML 1.1
--- !!str
"specific\L\
trimmed\n\n\n\
as space"

आप JSON प्रारूप में लाइन फोल्डिंग के लिए आउटपुट निम्नानुसार देख सकते हैं -

"specific\u2028trimmed\n\n\nas space"