YAML में पाइप प्रतीक का उपयोग क्या है?


126

मैं yaml के लिए नया हूं, और मेरे पास कई लाइनों के लिए उपयोग किए जाने वाले पाइप प्रतीक (!) के बारे में एक प्रश्न है। क्या YAML में कोई नीचे जैसा वाक्यविन्यास है?

परीक्षण: 6+

नीचे दो YAML फाइलों में से पहला काम कर रहा है और दूसरा नहीं। मुझे नहीं पता कि यह क्या कारण है।

पहली फ़ाइल

Name :
  -
   testing:
     val1
  -
   second:
     val2
  -
   third:
     val3
  -
   then
  - 
    final: |
     a
     aa
     aaa
     aaaa : 'test:'

दूसरी फ़ाइल

Name :
  -
   testing:
     val1
  -
   second:
     val2
  -
   third:
     val3
  -
   then
  - 
    final: |6+
      a
      aa
      aaa
      aaaa : 'test:'

दूसरी फ़ाइल ग्राहक है।

मैं XMLBeans का उपयोग कर रहा हूं और मुझे यह त्रुटि मिली:

com.esotericsoftware.yamlbeans.parser.Parser $ ParserException: पंक्ति 17, कॉलम 12: एक 'ब्लॉक एंड' की उम्मीद है, लेकिन पाया गया: ब्लॉक मैपिंग स्टार्ट "

जवाबों:


178

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

विशेष रूप से, पाइप इंगित करता है कि (इंडेंटेशन को छोड़कर) स्केलर मूल्य को शाब्दिक रूप से इस तरह से व्याख्या की जानी चाहिए, जो नई रूपरेखाओं को संरक्षित करता है। इसके विपरीत, >चरित्र इंगित करता है कि मल्टी-लाइन "तह" स्केलर का अनुसरण करता है, जिसका अर्थ है कि newlines रिक्त स्थान में परिवर्तित हो गए हैं। उदाहरण के लिए:

>>> import yaml
>>> yaml.load("""
... |
...  This is a multi-line
...  literal style scalar.
... """)
'This is a multi-line\nliteral style scalar.\n'
>>> yaml.load("""
... >
...  This is a multi-line
...  folded scalar; new lines are folded into
...  spaces.
... """)
'This is a multi-line folded scalar; new lines are folded into spaces.\n'

6+भाग खरोज सूचक (कैसे खरोज के कई रिक्त स्थान इस्तेमाल किया जाना चाहिए की एक स्पष्ट विनिर्देश) "chomping सूचक" के साथ है +जो नियंत्रण कैसे अदिश शाब्दिक के अंत में अतिरिक्त व्हाइट संभाला जाना चाहिए।

आपको जो त्रुटि मिल रही है वह एक मुश्किल है: यह इसलिए है क्योंकि इंडेंटेशन वर्तमान ब्लॉक-स्तरीय तत्व के सापेक्ष होना चाहिए। तो इस मामले में यह 4+इसके बजाय होना चाहिए 6+क्योंकि अंतिम ब्लॉक-स्तरीय तत्व सरणी आइटम (निर्दिष्ट -) है और शाब्दिक इसे 4 से प्रेरित है। आश्चर्यजनक रूप से final: |मानचित्रण को एक ब्लॉक तत्व नहीं माना जाता है, भले ही इसका मूल्य बहु-पंक्तिबद्ध हो। यदि आप इसके बारे में सोचते हैं तो यह समझ में आता है - यह अभी भी एक 'वन-लाइनर' '' कुंजी '' है। मान सिर्फ मल्टी-लाइन स्केलर मानों के लिए एक विशेष सिंटैक्स का उपयोग करने के लिए होता है। भ्रामक, लेकिन किसी भी तरह लगातार ...


6
जब आप कहते हैं "इंडेंटेशन की कितनी लाइनों का उपयोग किया जाना चाहिए", तो क्या आपका मतलब इंडेंटेशन कैरेक्टर (मान लीजिए कि रिक्त स्थान हैं)? या वास्तव में लाइनें?
ROUNofF

5
@ROunofF चार साल पुराना उत्तर और आप उस बिंदु को बताने वाले पहले व्यक्ति हैं। यह कहना चाहिए "इंडेंटेशन के रिक्त स्थान"। मैं ठीक कर दूँगा।
इगुआनाउत


3

पाइप का उपयोग तब किया जाता है जब आप चाहते हैं कि समाचार पत्र को नई सूची के रूप में रखा जाए।

अधिक जानकारी के लिए: https://yaml-multiline.info/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.