ওয়াইএএমএলে পাইপ প্রতীকের ব্যবহার কী?


126

আমি ইয়ামলে নতুন এবং আমার একাধিক লাইনের জন্য ব্যবহৃত পাইপ প্রতীক (|) সম্পর্কে একটি প্রশ্ন রয়েছে। YAML এর নীচের মতো কোনও সিনট্যাক্স আছে?

পরীক্ষা: | 6+

নীচের দুটি ওয়াইএএমএল ফাইলের মধ্যে প্রথমটি কাজ করছে এবং দ্বিতীয়টি নয়। আমি জানি না কী কারণে এটি হচ্ছে।

প্রথম ফাইল

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:'

দ্বিতীয় ফাইলটি গ্রাহকের।

আমি এক্সএমএলবিয়ান ব্যবহার করছি এবং আমি এই ত্রুটিটি পেয়েছি:

com.esotericsoftware.yamlbeans.parser.Parser ars ParserException: লাইন 17, কলাম 12: একটি 'ব্লক শেষ' প্রত্যাশিত তবে পাওয়া গেছে: ব্লক ম্যাপিং শুরু "

উত্তর:


178

ওয়াইএএমএলে একটি লাইনের শেষে পাইপ প্রতীকটি নির্দেশ করে যে নীচের যে কোনও ইন্ডেন্টেড পাঠ্যটি বহু-লাইন স্কেলারের মান হিসাবে ব্যাখ্যা করা উচিত। দেখুন YAML বৈশিষ্ট

বিশেষত, পাইপটি ইঙ্গিত করে যে (ইনডেন্টেশন ব্যতীত) স্কেলারের মানটি এমনভাবে অর্থে ব্যাখ্যা করা উচিত যা নিউলাইনগুলি সংরক্ষণ করে। বিপরীতভাবে, >অক্ষরটি নির্দেশ করে যে মাল্টি-লাইন "ভাঁজ" স্কেলারটি অনুসরণ করে, যার অর্থ নিউলাইনগুলি স্পেসে রূপান্তরিত হয়। উদাহরণ স্বরূপ:

>>> 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
@ রুনোফ চার বছরের পুরানো উত্তর এবং আপনি প্রথম ব্যক্তি এটি উল্লেখ করেছেন। এটিতে "ইনডেন্টেশনের স্পেস" বলা উচিত। আমি এটা ঠিক করব।
ইগুয়ানানাট


3

আপনি যখন নিউজলাইনগুলিকে নিউলাইন হিসাবে রাখতে চান তখন পাইপটি ব্যবহৃত হয়।

আরও তথ্যের জন্য: https://yaml-multline.info/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.