YAML को TOML में बदलें

यहाँ आप YAML को TOML में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।

  • कहाँ चलता है आपके ब्राउज़र में। फ़ाइल कभी अपलोड नहीं होती।
  • बिना नुक़सान कुछ नहीं छोड़ा जाता। YAML में जो था, TOML में ठीक वही रहता है।
  • फ़ाइल आकार की सीमा हर फ़ाइल 100 MB तक, मुफ़्त, बिना खाते के।

एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।

TOML बनने पर YAML दस्तावेज़ का आकार कैसा होता है

सादे मूल्य और सरणियाँ ऊपर लिखी जाती हैं, फिर हर नेस्टेड mapping अपना ब्रैकेट वाला टेबल हेडर बनकर आता है। तीन स्तर गहरी नेस्टिंग तीन नेस्टेड ब्लॉक की जगह बिंदु वाला एक ही हेडर देती है, इसलिए tool, फिर ruff, फिर कोई सेटिंग — यह एक [tool.ruff] हेडर बनकर आता है, सेटिंग उसके नीचे।

यह हेडर का चपटा होना दोनों फ़ॉर्मेट के बीच सबसे साफ़ दिखने वाला फ़र्क़ है। YAML गहराई ख़ाली जगह से बताता है और बिना सीमा के नेस्ट हो सकता है, पढ़ने लायक़ रहना छोड़े बिना; TOML गहराई को हेडर नाम में लिखता है और चार स्तर पर भी पढ़ने लायक़ रहता है क्योंकि पूरा रास्ता हर ब्लॉक पर लिखा जाता है। किसी प्रोजेक्ट कॉन्फ़िग के लिए यह आमतौर पर सही सौदा है।

ख़ाली YAML कुंजी TOML आउटपुट से हट जाती है

key: लिखी लाइन जिसके बाद कुछ न हो, वह मान्य YAML है और null बनकर पार्स होती है। TOML में null मूल्य है ही नहीं — विनिर्देश उसे परिभाषित ही नहीं करता — इसलिए लेखक कुंजी छोड़ ही देता है। कोई एरर नहीं, कोई प्लेसहोल्डर नहीं: कुंजी आपके YAML में थी और TOML में नहीं है।

यह लगने से ज़्यादा मायने रखता है क्योंकि ख़ाली कुंजियाँ जान-बूझकर की गई YAML आदत हैं। वे किसी सेटिंग को मौजूद-पर-असेट न होने की तरह चिह्नित करती हैं, ऑपरेटर के बाद में भरने के लिए जगह रखती हैं, और यह दर्ज करती हैं कि विकल्प मौजूद है। बदलने से पहले कोलन पर ख़त्म होती लाइनों को स्रोत में खोजिए।

ख़ाली सूची तत्व बदलाव को रोक देता है

सरणी में वही null अलग तरह बरतता है: लेखक इनकार कर देता है, और बदलाव यह संदेश देकर असफल होता है कि सरणी null या undefined मूल्य नहीं रख सकती। कुछ नहीं बनता।

यह दोनों में से बेहतर बर्ताव है, और यह असंगति जान-बूझकर है। टेबल से कुंजी हटाना बाक़ी टेबल को मतलब भरा रहने देता है; सरणी से तत्व हटाना उसके बाद के हर तत्व को खिसका देता है, जो क्रम-सूची को अलग सूची बना देता है।

TOML फ़ाइल अलग क्रम में क्यों पढ़ती है

TOML टेबल के हिसाब से समूह बनाता है। किसी टेबल से जुड़ी हर चीज़ उसके हेडर के बाद और अगले हेडर से पहले आनी चाहिए, इसलिए लेखक पहले हर scalar और सरणी लिखता है और फिर हर नेस्टेड ब्लॉक बारी-बारी। इस तरह बदली .gitlab-ci.yml अपनी stages सरणी ऊपर और जॉब परिभाषाओं को नीचे टेबल की तरह रखती है, चाहे YAML में क्रम कुछ भी रहा हो।

योजना बनाने लायक़ नतीजा है diff। अगर YAML फ़ाइल समीक्षा में है और उसी रिपॉज़िटरी में TOML उसकी जगह लेने वाली है, तो पहला कमिट अनुवाद के बजाय दोबारा-लिखा हुआ लगेगा, क्योंकि है भी वही।

बहु-पंक्ति YAML स्क्रिप्ट एक escaped स्ट्रिंग बनकर आती है

पाइप चरित्र के बाद इंडेंट किया शेल स्क्रिप्ट — जो हर CI फ़ाइल के अपने बिल्ड कमांड रखने का तरीक़ा है — newline वाली स्ट्रिंग में पार्स होता है, और लेखक उसे बैकस्लैश-n escape के साथ सादी उद्धृत TOML स्ट्रिंग की तरह लिखता है। दस लाइन की स्क्रिप्ट एक बहुत लंबी लाइन बन जाती है।

TOML के पास triple-quote वाला बहु-पंक्ति स्ट्रिंग सिंटैक्स है जो स्क्रिप्ट को पढ़ने लायक़ रखता, और लेखक इसे इस्तेमाल नहीं करता। यह हाथ से करने वाला बदलाव है: escaped newline वाले मूल्य ढूँढिए, और हर एक को triple-quote ब्लॉक में दोबारा लिखिए।

वे टाइप किए मूल्य जो TOML देता है और यह बदलाव नहीं देता

इस परिवार में TOML इकलौता ऐसा फ़ॉर्मेट है जिसमें पहली श्रेणी की तारीख़ें हैं: offset datetime, local datetime, local date और local time सब विनिर्देश का हिस्सा हैं और TOML पार्सर उन्हें स्ट्रिंग की जगह तारीख़ की तरह वापस देता है। यही मुख्य वजह है कि कोई प्रोजेक्ट JSON के बजाय TOML चुनता है।

यह बदलाव आपको वे नहीं देता। YAML 1.2 बिना उद्धरण वाले 2024-01-02 को स्ट्रिंग मानता है, इसलिए यह TOML में "2024-01-02" उद्धरण सहित आता है। बाद में इन्हें उद्धरण से हटाना पूरा काम है और सेकंड लेता है।

mapping की सूचियाँ tables की सरणी बनती हैं

जिस निर्माण की सबसे ज़्यादा चिंता होती है वही सबसे अच्छा काम करता है। YAML सूची जिसके तत्व mapping हों — लेखकों की सूची, बाइनरी की सूची, जॉब की सूची — TOML में tables की सरणी बनती है, दोहरे-ब्रैकेट वाला हेडर हर तत्व के लिए दोहराया जाता है। यही वह आकार है जो pyproject.toml या Cargo.toml अपने authors और targets के लिए चाहता है।

YAML फ़ाइल के बिलकुल ऊपर की सूची अपवाद है। TOML दस्तावेज़ हमेशा एक टेबल होता है, इसलिए जो दस्तावेज़ सिर्फ़ सूची है वह items नाम की एक कुंजी वाली टेबल में लपेटा जाता है।

वे कुंजियाँ जिन्हें TOML लेखक उद्धरण में डालता है

TOML की बिना-उद्धरण कुंजियों में अक्षर, अंक, underscore और हाइफ़न ही चल सकते हैं। बाक़ी सब उद्धृत होना चाहिए, और लेखक आपके लिए उद्धृत कर देता है: बिंदु वाली कुंजी "date.timezone" बनकर उद्धरण सहित आती है, और जगह वाली कुंजी भी वैसी ही।

उद्धृत कुंजी एक संकेत भी है। बिंदु वाली उद्धृत कुंजी आमतौर पर मतलब रखती है कि YAML ने संरचना नेस्टिंग की जगह कुंजी नाम में बयान की थी, और TOML में वह संरचना असली टेबल के रूप में बेहतर लिखी जाती।

टिप्पणियाँ, और YAML फ़ाइल को क्यों बचाकर रखना चाहिए

दोनों फ़ॉर्मेट टिप्पणी को सँभालते हैं और आपकी कोई भी पार नहीं होती। पार्सर पढ़ते वक़्त उन्हें छोड़ देता है और लेखक के पास लिखने को कुछ नहीं। किसी प्रोजेक्ट कॉन्फ़िग पर यह असली नुक़सान है — कोई dependency क्यों pin की गई इसका नोट, कमेंट किया विकल्प, कोई लाइन बताती हुई कि कौन-सा ब्लॉक किस माहौल पर लागू है।

माइग्रेशन तभी पूरी होती है जब वे वापस आ जाएँ। बदलिए, फिर पुरानी YAML और नई TOML साथ-साथ खोलकर टिप्पणियाँ वापस अपनी जगह जोड़िए। किसी सामान्य फ़ाइल पर यह दस मिनट का काम है और यही फ़र्क़ है ऐसे कॉन्फ़िग के बीच जिसे कोई सँभाल सके और जो काम करे पर कोई छूने की हिम्मत न करे।

YAML को TOML में ऐसे बदलें

  1. अपनी YAML फ़ाइल इस पेज पर छोड़ें, या चुनने के लिए दबाएँ।
  2. लक्ष्य के रूप में TOML चुनें। कन्वर्ज़न आपके ब्राउज़र में होता है और फ़ाइल अपलोड नहीं होती।
  3. तैयार TOML फ़ाइल डाउनलोड कर लें।

YAML या TOML: क्या बदलता है

YAML और TOML की तुलना
YAMLTOML
पूरा नामYAML Ain't Markup LanguageTom's Obvious Minimal Language
फ़ाइल एक्सटेंशन.yaml, .yml.toml
मीडिया टाइपapplication/yamlapplication/toml
पहली बार प्रकाशित20012013
विनिर्देशYAML 1.2TOML 1.0
लाइसेंसखुला मानकखुला मानक
आज की स्थितिमौजूदामौजूदा
ब्राउज़र में खुलता हैकोई ब्राउज़र नहींकोई ब्राउज़र नहीं
इसकी जगह विचारणीयJSONJSON, INI

क्या बचा रहता है

कुछ नहीं खोता। YAML और TOML — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।

टिप्पणियाँ साथ जाती हैं। YAML और TOML — दोनों में टिप्पणी की वाक्य-रचना है, इसलिए बाद में फ़ाइल सँभालने वाले के लिए छोड़े गए नोट चुपचाप ग़ायब नहीं होते।

नतीजा खोलना

Visual Studio Code YAML और TOML — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।

कौन-सा फ़ॉर्मेट किस काम के लिए है

YAML 2001 में आया। यह YAML 1.2 में तय किया गया है, और अगर फ़ाइल को उस औज़ार से ज़्यादा जीना है जिसने उसे लिखा, तो यह बात क़ीमती है।

TOML 2013 से चला आ रहा है, और TOML 1.0 में तय किया गया है। Visual Studio Code इस फ़ॉर्मेट को पढ़ लेता है।

YAML से TOML: आम सवाल

क्या मेरी YAML फ़ाइल कहीं अपलोड होती है?

नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो।

क्या YAML को TOML में बदलना मुफ़्त है?

हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।

YAML को TOML में बदलने पर क्या गुणवत्ता जाती है?

नहीं। TOML वही सामग्री बिना कुछ फेंके सँभालता है: नतीजा गुणवत्ता में असली फ़ाइल जैसा ही होता है।

क्या YAML से TOML बिना नुक़सान का है?

कुछ नहीं खोता। YAML और TOML — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।

इन फ़ॉर्मेट के बारे में और