string - वाईएएमएल में, मैं एकाधिक लाइनों पर एक स्ट्रिंग कैसे तोड़ सकता हूं?




yaml data-representation (6)

वाईएएमएल में, मेरे पास एक स्ट्रिंग है जो बहुत लंबी है। मैं इसे अपने संपादक के 80-कॉलम (या तो) दृश्य में रखना चाहता हूं, इसलिए मैं स्ट्रिंग को तोड़ना चाहता हूं। इसके लिए वाक्यविन्यास क्या है?

दूसरे शब्दों में, मेरे पास यह है:

Key: 'this is my very very very very very very long string'

और मैं यह (या इस प्रभाव के लिए कुछ) चाहते हैं:

Key: 'this is my very very very ' +
     'long string'

मैं उपरोक्त उद्धरणों का उपयोग करना चाहता हूं, इसलिए मुझे स्ट्रिंग के भीतर कुछ भी बचने की आवश्यकता नहीं है।


आप इसे विश्वास नहीं कर सकते हैं, लेकिन वाईएएमएल बहु-पंक्ति कुंजी भी कर सकता है:

?
 >
 multi
 line
 key
:
  value

परिस्थितियों के लिए स्ट्रिंग में रिक्त स्थान हो सकते हैं या नहीं, मैं बैकस्लाश के साथ डबल कोट्स और लाइन निरंतरता पसंद करता हूं:

key: "String \
  with long c\
  ontent"

लेकिन इस मामले के लिए पतन के बारे में ध्यान दें कि एक निरंतरता रेखा एक अंतरिक्ष से शुरू होती है, इसे बचने की जरूरत है (क्योंकि इसे कहीं और हटा दिया जाएगा):

key: "String\
  \ with lon\
  g content"

यदि स्ट्रिंग में लाइन ब्रेक होते हैं, तो इसे सी शैली \n में लिखा जाना चाहिए।

यह सवाल भी देखें।


यामल्ड फोल्ड शैली का उपयोग करके, प्रत्येक लाइन ब्रेक को एक स्थान से बदल दिया जाता है। प्रत्येक पंक्ति में इंडेंट को नजरअंदाज कर दिया जाएगा।

>
  This is a very long sentence
  that spans several lines in the YAML
  but which will be rendered as a string
  without carriage returns.

http://symfony.com/doc/current/components/yaml/yaml_format.html


वाईएएमएल में मल्टी-लाइन स्ट्रिंग्स लिखने के विभिन्न तरीके 5 अलग-अलग तरीके हैं (या 63 *, आप कैसे गिनते हैं)।

ब्लॉक स्केलर शैलियों ( > , | )

ये \ " बिना भागने के पात्रों को अनुमति देते हैं, और अपनी स्ट्रिंग के अंत में एक नई पंक्ति ( \n ) जोड़ते हैं।

> तब्दील शैली स्ट्रिंग के भीतर एकल न्यूलाइन को हटा देती है (लेकिन अंत में एक जोड़ती है, और सिंगल न्यूलाइन को एकल में परिवर्तित करती है):

Key: >
  this is my very very very
  long string

this is my very very very long string\n

| शाब्दिक शैली स्ट्रिंग के भीतर प्रत्येक नई लाइन को एक शाब्दिक न्यूलाइन में बदल देती है, और अंत में एक जोड़ती है:

Key: |
  this is my very very very 
  long string

this is my very very very\nlong string\n

वाईएएमएल स्पेक 1.2 से आधिकारिक परिभाषा यहां दी गई है

स्केलर सामग्री को ब्लॉक नोटेशन में लिखा जा सकता है, एक शाब्दिक शैली ("|" द्वारा इंगित) जहां सभी लाइन ब्रेक महत्वपूर्ण हैं। वैकल्पिक रूप से, उन्हें तह शैली (">" द्वारा दर्शाया गया) के साथ लिखा जा सकता है, जहां प्रत्येक लाइन ब्रेक को एक स्थान पर तब्दील किया जाता है जब तक कि यह खाली या अधिक इंडेंटेड लाइन समाप्त न हो जाए।

ब्लॉक चॉम्पिंग सूचक के साथ ब्लॉक शैलियों ( >- , |- , >+ , |+ )

आप एक स्ट्रिंग में अंतिम नई लाइन के हैंडलिंग को नियंत्रित कर सकते हैं, और किसी भी पीछे की रिक्त रेखाएं ( \n\n ) ब्लॉक चॉम्पिंग सूचक चरित्र जोड़कर नियंत्रित कर सकते हैं:

  • > , | : "क्लिप": लाइन फ़ीड रखें, पिछली खाली रेखाओं को हटा दें।
  • >- , |- : "स्ट्रिप": लाइन फीड को हटाएं, पिछली खाली रेखाओं को हटा दें।
  • >+ , |+ : "रखें": रेखा फ़ीड रखें, पीछे की रेखाओं को पीछे रखें।

"प्रवाह" स्केलर शैलियों ( , " , ' )

इन्हें सीमित भागना पड़ा है, और एक सिंगल लाइन स्ट्रिंग का निर्माण नहीं किया गया है जिसमें कोई नया लाइन वर्ण नहीं है। वे कुंजी के समान लाइन या पहले अतिरिक्त न्यूलाइन के साथ शुरू कर सकते हैं।

सादा शैली (कोई भाग नहीं, कोई # या : संयोजन, पहले चरित्र पर सीमाएं):

Key: this is my very very very 
  long string

डबल-उद्धृत शैली ( \ और " से बच जाना चाहिए \ , न्यूलाइन को शाब्दिक \n अनुक्रम के साथ सम्मिलित किया जा सकता है, रेखाओं को पीछे की जगहों के बिना समेकित किया जा सकता है \ ):

Key: "this is my very very \"very\" loooo\
  ng string.\n\nLove, YAML."

"this is my very very \"very\" loooong string.\n\nLove, YAML."

एकल उद्धृत शैली (शाब्दिक ' को दोगुना किया जाना चाहिए, कोई विशेष पात्र नहीं, संभवतः डबल कोट्स से शुरू होने वाले तारों को व्यक्त करने के लिए उपयोगी):

Key: 'this is my very very "very"
  long string, isn''t it.'

"this is my very very \"very\" long string, isn't it."

सारांश

इस तालिका में, _ space character मतलब space character\n मतलब है "न्यूलाइन कैरेक्टर" ( \n जावास्क्रिप्ट में), "इनलाइन न्यूलाइन" पंक्ति को छोड़कर, जहां इसका अर्थ शाब्दिक रूप से बैकस्लैश और एन है)।

                      >     |            "     '     >-     >+     |-     |+
-------------------------|------|-----|-----|-----|------|------|------|------  
Trailing spaces   | Kept | Kept |     |     |     | Kept | Kept | Kept | Kept
Single newline => | _    | \n   | _   | _   | _   | _    |  _   | \n   | \n
Double newline => | \n   | \n\n | \n  | \n  | \n  | \n   |  \n  | \n\n | \n\n
Final newline  => | \n   | \n   |     |     |     |      |  \n  |      | \n
Final dbl nl's => |      |      |     |     |     |      | Kept |      | Kept  
In-line newlines  | No   | No   | No  | \n  | No  | No   | No   | No   | No
Spaceless newlines| No   | No   | No  | \   | No  | No   | No   | No   | No 
Single quote      | '    | '    | '   | '   | ''  | '    | '    | '    | '
Double quote      | "    | "    | "   | \"  | "   | "    | "    | "    | "
Backslash         | \    | \    | \   | \\  | \   | \    | \    | \    | \
" #", ": "        | Ok   | Ok   | No  | Ok  | Ok  | Ok   | Ok   | Ok   | Ok
Can start on same | No   | No   | Yes | Yes | Yes | No   | No   | No   | No
line as key       |

उदाहरण

"रिक्त स्थान" से पहले लाइन पर पिछली जगहों पर ध्यान दें।

- >
  very "long"
  'string' with

  paragraph gap, \n and        
  spaces.
- | 
  very "long"
  'string' with

  paragraph gap, \n and        
  spaces.
- very "long"
  'string' with

  paragraph gap, \n and        
  spaces.
- "very \"long\"
  'string' with

  paragraph gap, \n and        
  s\
  p\
  a\
  c\
  e\
  s."
- 'very "long"
  ''string'' with

  paragraph gap, \n and        
  spaces.'
- >- 
  very "long"
  'string' with

  paragraph gap, \n and        
  spaces.

[
  "very \"long\" 'string' with\nparagraph gap, \\n and         spaces.\n", 
  "very \"long\"\n'string' with\n\nparagraph gap, \\n and        \nspaces.\n", 
  "very \"long\" 'string' with\nparagraph gap, \\n and spaces.", 
  "very \"long\" 'string' with\nparagraph gap, \n and spaces.", 
  "very \"long\" 'string' with\nparagraph gap, \\n and spaces.", 
  "very \"long\" 'string' with\nparagraph gap, \\n and         spaces."
]

इंडेंटेशन संकेतकों के साथ ब्लॉक शैलियों

अगर उपरोक्त आपके लिए पर्याप्त नहीं है, तो आप " ब्लॉक इंडेंटेशन इंडिकेटर " जोड़ सकते हैं (आपके ब्लॉक चॉम्पिंग इंडिकेटर के बाद, यदि आपके पास कोई है):

- >8
        My long string
        starts over here
- |+1
 This one
 starts here

परिशिष्ट

यदि आप फोल्ड शैली में पहली पंक्तियों की शुरुआत में अतिरिक्त रिक्त स्थान डालते हैं, तो उन्हें बोनस न्यूलाइन के साथ रखा जाएगा। यह प्रवाह शैलियों के साथ नहीं होता है:

- >
    my long
      string
- my long
    string

["my long\n string\n", "my long string"]

मैं भी नहीं कर सकता

* 2 ब्लॉक शैलियों, प्रत्येक 2 संभावित ब्लॉक चॉम्पिंग संकेतक (या कोई नहीं) के साथ, और 9 संभावित इंडेंटेशन संकेतक (या कोई नहीं), 1 सादा शैली और 2 उद्धृत शैलियों के साथ: 2 एक्स (2 + 1) एक्स (9 + 1) + 1 + 2 = 63

इस जानकारी में से कुछ को here सारांशित किया गया here


1. ब्लॉक नोटेशन: ब्लॉक हटा दिए जाने के बाद न्यूलाइन रिक्त स्थान और अतिरिक्त न्यूलाइन बन जाती है

---
# Note: it has 1 new line after the string
content:
    Arbitrary free text
    over multiple lines stopping
    after indentation changes...

...

समतुल्य JSON

{
 "content": "Arbitrary free text over multiple lines stopping after indentation changes..."
}

2. शाब्दिक ब्लॉक स्केलर: एक शाब्दिक ब्लॉक स्केलर | न्यूलाइन और किसी पीछे की जगहों को शामिल किया जाएगा। लेकिन अतिरिक्त हटा देता है

ब्लॉक के बाद नई लाइनें।

---
# After string we have 2 spaces and 2 new lines
content1: |
 Arbitrary free text
 over "multiple lines" stopping
 after indentation changes...  


...

समतुल्य JSON

{
 "content1": "Arbitrary free text\nover \"multiple lines\" stopping\nafter indentation changes...  \n"
}

3. + लिटल ब्लॉक स्केलर के साथ सूचक: ब्लॉक के बाद अतिरिक्त न्यूलाइन रखें

---
# After string we have 2 new lines
plain: |+
 This unquoted scalar
 spans many lines.


...

समतुल्य JSON

{
 "plain": "This unquoted scalar\nspans many lines.\n\n\n"
}

4. - लिटल ब्लॉक स्केलर के साथ सूचक: - इसका मतलब है कि स्ट्रिंग के अंत में नई लाइन हटा दी गई है।

---
# After string we have 2 new lines
plain: |-
 This unquoted scalar
 spans many lines.


...

समतुल्य JSON

{
 "plain": "This unquoted scalar\nspans many lines."
}

5. फोल्ड ब्लॉक स्केलर (>):

रिक्त स्थान पर न्यूलाइन को फोल्ड करेगा और ब्लॉक के बाद अतिरिक्त न्यूलाइन हटा देगा।

---
folded_newlines: >
 this is really a
 single line of text
 despite appearances


...

समतुल्य JSON

{
 "fold_newlines": "this is really a single line of text despite appearances\n"
}

अधिक के लिए आप मेरे blog पर जा सकते हैं


न्यूलाइन उपयोग को संरक्षित करने के लिए | , उदाहरण के लिए:

|
  This is a very long sentence
  that spans several lines in the YAML
  but which will be rendered as a string
  with newlines preserved.

का अनुवाद "यह एक बहुत लंबी वाक्य \ n है जो YAML \ n में कई पंक्तियों को फैलाता है लेकिन जिसे संरक्षित न्यूलाइन के साथ एक स्ट्रिंग \ n के रूप में प्रस्तुत किया जाएगा।"






data-representation