YAML फ़ॉर्मेटर

ब्राउज़र में चलता है फ़ॉर्मेटिंग

YAML पार्स करें, सिंटैक्स की गलतियाँ लाइन नंबर के साथ देखें, और चुने हुए इंडेंटेशन के साथ साफ़ डॉक्यूमेंट पाएँ — Kubernetes, Docker Compose, GitHub Actions और OpenAPI फ़ाइलों के लिए आदर्श।

गोपनीयता: यह टूल पूरी तरह आपके ब्राउज़र में चलता है। आपका इनपुट कभी आपके डिवाइस से बाहर नहीं जाता।
टूल लोड हो रहा है…

YAML क्या है?

YAML एक मानव-अनुकूल डेटा फ़ॉर्मेट है जो ब्रेसेस की जगह इंडेंटेशन इस्तेमाल करता है और कॉन्फ़िगरेशन (CI पाइपलाइन, Kubernetes, OpenAPI) में आम है। YAML 1.2 JSON का सुपरसेट है: हर JSON दस्तावेज़ वैध YAML है, पर YAML कमेंट, एंकर और इम्प्लिसिट टाइपिंग जोड़ता है — और ज़्यादातर चौंकाने वाली बातें वहीं से आती हैं।

YAML फ़ॉर्मेटर कैसे इस्तेमाल करें

  1. YAML पेस्ट करें।
  2. इंडेंटेशन, कलेक्शन स्टाइल और quoting चुनें।
  3. बताई गई कोई भी गलती ठीक करें और साफ़ डॉक्यूमेंट कॉपी करें।
फ़ॉर्मेटर YAML को डेटा में पार्स करके वही डेटा दोबारा लिखता है, इसलिए कमेंट और anchor खो जाते हैं और वैल्यू लिखने का तरीक़ा बदल सकता है।
  1. 1YAML टेक्स्ट--- से अलग एक या ज़्यादा डॉक्यूमेंट
  2. 2पार्सYAML 1.2 core schema, strict modeकीज़ डुप्लिकेट नहीं हो सकतीं; << merge key लागू होते हैं

    शाखा: सिंटैक्स की गलती, डुप्लिकेट key या ग़लत इंडेंटेशन (लाइन और कॉलम के साथ), या alias bomb: एरर, कोई आउटपुट नहींफ़ेल

  3. 3सादा डेटावैकल्पिक: कुंजियाँ क्रमबद्ध करेंकमेंट चले जाते हैं; anchor, alias और merge सादी कॉपी बनते हैं; explicit tag हटते हैं
  4. 4दोबारा लिखनाचुना गया इंडेंटेशन, कलेक्शन स्टाइल और quoting; वैल्यू का टाइप बना रहता है, पर लिखने का तरीक़ा हमेशा नहीं1.0 → 1, 0x1F → 31फ़ॉर्मेटेड YAML

इसके बाद:डॉक्यूमेंट --- से फिर जुड़ते हैं

!Ref जैसा अनजान tag भी हट जाता है; टूल उसके लिए चेतावनी दिखाता है।

YAML फ़ॉर्मेटर की खूबियाँ

  • YAML 1.2 पार्स करता है और सिंटैक्स की गलतियाँ लाइन, कॉलम व अंश के साथ बताता है
  • 2 या 4 स्पेस इंडेंटेशन और एकसमान quoting के साथ दोबारा लिखता है
  • कलेक्शन के लिए block या flow स्टाइल, वैकल्पिक की-सॉर्टिंग
  • कई डॉक्यूमेंट वाली स्ट्रीम (---) समर्थित हैं
  • डुप्लिकेट कीज़ और alias bomb पकड़ता है
  • Kubernetes manifest, Docker Compose, GitHub Actions और OpenAPI फ़ाइलों के लिए बढ़िया

YAML फ़ॉर्मेटर का उदाहरण

इंडेंटेशन को सामान्य करना

इनपुट:

services:
    web:
        image: nginx
        ports: [ "80:80" ]

आउटपुट:

services:
  web:
    image: nginx
    ports:
      - 80:80

YAML फ़ॉर्मेटर के बारे में अक्सर पूछे जाने वाले सवाल

क्या यह कमेंट रखता है?

नहीं। डॉक्यूमेंट पार्स करके दोबारा लिखा जाता है, इसलिए कमेंट और anchor हल हो जाते हैं। इसे इंडेंटेशन और quoting सामान्य करने के लिए इस्तेमाल करें, कमेंट-भरी फ़ाइलों के लिए नहीं।

कौन-सी गलतियाँ बताई जाती हैं?

लाइन और कॉलम के साथ सिंटैक्स की गलतियाँ, डुप्लिकेट कीज़, ग़लत इंडेंटेशन और बिना बंद किए कोट्स। एरर अंश आसपास की लाइनें दिखाता है।

क्या मैं कई डॉक्यूमेंट वाली फ़ाइल फ़ॉर्मेट कर सकता हूँ?

हाँ। --- से अलग किए गए डॉक्यूमेंट अलग-अलग फ़ॉर्मेट होते हैं और फिर --- सेपरेटर के साथ जोड़ दिए जाते हैं।

मेरी "yes"/"no" या "1.0" वैल्यू क्यों बदल गईं?

फ़ॉर्मेटर डॉक्यूमेंट को डेटा में पार्स करता है और YAML 1.2 core schema के साथ दोबारा लिखता है, इसलिए वैल्यू का टाइप बना रहता है, पर लिखने का तरीक़ा हमेशा नहीं। संख्याएँ सादे रूप में लिखी जाती हैं (1.0 बन जाता है 1, 0x1F बन जाता है 31), 2^53 − 1 से बड़े पूर्णांक गोल हो जाते हैं, जिससे उनका मान बदल जाता है, और जिन कोट की YAML 1.2 को ज़रूरत नहीं, वे हट जाते हैं: "yes" और "on" YAML 1.2 में साधारण स्ट्रिंग हैं, इसलिए बिना कोट के लौटते हैं। जो स्ट्रिंग YAML 1.2 में संख्या, boolean या null पढ़ी जाती, जैसे "1.0" या "true", वह कोट में ही रहती है। PyYAML जैसे YAML 1.1 पार्सर बिना कोट वाले yes, no, on और off को boolean और 22:22 को बेस-60 संख्या पढ़ते हैं, इसलिए जब फ़ाइल ऐसा पार्सर पढ़े तो "सभी स्ट्रिंग्स को कोट करें" चुनें।

तकनीकी नोट्स

Formatting yaml पैकेज से parse-and-re-emit है: parseAllDocuments strict mode, uniqueKeys और merge के साथ चलता है, फिर हर दस्तावेज़ JSON-safe वैल्यू बनकर lineWidth 0 के साथ दोबारा छपता है। इसीलिए anchor, alias और << merge key सादी कॉपी बन जाते हैं, !!timestamp और !!binary ISO 8601 और base64 स्ट्रिंग बनते हैं, explicit tag हटते हैं, और 2^53 − 1 से बड़े integer गोल होते हैं। 1.2 core schema में yes/no/on/off स्ट्रिंग ही रहते हैं।

parse और print के बीच दस्तावेज़ JavaScript object बनता है, इसलिए integer जैसी key (0, 1…) कोट होकर बिना sorting भी बढ़ते क्रम में आगे खिसक जाती हैं; 'Sort keys' UTF-16 code unit से क्रम लगाता है, यानी uppercase पहले। Block sequence parent key के नीचे indent होते हैं, multi-line स्ट्रिंग | literal block बनती हैं, 'Flow style' पूरा दस्तावेज़ एक लाइन में समेटता है, और stream --- से जुड़ती है (ख़ाली दस्तावेज़ null छपता है)।

संदर्भ

  • YAML Ain't Markup Language (YAML™) version 1.2.2YAML.org · 2021YAML 1.2 का डेटा मॉडल और सिंटैक्स, और JSON से उसका संबंध (हर JSON दस्तावेज़ वैध YAML 1.2 है)।
  • HTML Living StandardWHATWGHTML भाषा, नामित कैरेक्टर रेफ़रेंस (एंटिटी) और ब्राउज़रों के पार्सिंग नियमों सहित।