উভয় ফরম্যাটই মানব-সম্পাদিত কনফিগারেশন ফাইলকে লক্ষ্য করে, কিন্তু তাদের চারপাশের ইকোসিস্টেম ভিন্ন। TOML হলো Python প্যাকেজিং (pyproject.toml), Rust (Cargo.toml), GitHub ওয়ার্কফ্লো এবং অনেক CLI টুলের মান। YAML হলো Kubernetes, Ansible, Docker Compose, GitHub Actions (পুরোনো সিনট্যাক্স) এবং অনেক CI সিস্টেমের মান।
কখনও কখনও আপনাকে উভয় ফরম্যাটে একই কনফিগারেশন প্রকাশ করতে হয়: একটি Ansible প্লেবুকের ভিতরে pyproject.toml স্নিপেট পুনরায় ব্যবহার করা, বা একটি Kubernetes ConfigMap কে Cargo.toml ডিপেন্ডেন্সি ব্লকে প্রতিলিপি করা। একটি TOML-থেকে-YAML কনভার্টার অনুবাদটিকে যান্ত্রিক রাখে।
রূপান্তরে কী টিকে থাকে
ম্যাপিং, সিকোয়েন্স, স্কেলার (স্ট্রিং, পূর্ণসংখ্যা, ভাসমান সংখ্যা, বুলিয়ান, ISO তারিখ), ইনলাইন টেবিল এবং ডটেড কী - সবই পরিষ্কারভাবে রূপান্তরিত হয়। মাল্টি-লাইন স্ট্রিং YAML ব্লক স্কেলার হিসাবে নির্গত হয়, যা মূল TOML লেখক যে ভিজ্যুয়াল লেআউট বেছে নিয়েছিলেন তা সংরক্ষণ করে।
যা সংরক্ষিত হয় না
YAML ট্যাগ (!!str, !!int ইত্যাদি) কেবল তখনই নির্গত হয় যখন অন্তর্নিহিত টাইপটি YAML-এর ডিফল্ট ইনফারেন্স থেকে ভিন্ন হয়। বাস্তবে পার্সারের পছন্দ বেশিরভাগ পাঠক যা প্রত্যাশা করে তার সাথে মেলে। YAML অ্যাঙ্কর ডিফল্টভাবে তৈরি হয় না কারণ প্রতিটি TOML মান সম্পূর্ণ স্বয়ংসম্পূর্ণ; আপনি যদি ভাগ করা সাব-ট্রি চান, সেগুলো হাতে প্রবেশ করান।
ওয়ার্কফ্লো টিপস
রূপান্তরের পরে, কমিট করার আগে YAML-কে একটি লিন্টার (yamllint, kubeconform) দিয়ে চালান। কনভার্টারটি সিনট্যাক্স অনুবাদ করে, স্টাইল নয়: এটি জানতে পারে না আপনি ফাইলটিকে snake_case নাকি kebab-case অনুসরণ করতে চেয়েছিলেন, অথবা 2-স্পেস নাকি 4-স্পেস ইন্ডেন্ট চেয়েছিলেন। আপনার প্রকল্পের কনভেনশনই তা নির্ধারণ করে।
সচরাচর জিজ্ঞাসিত প্রশ্ন
কনভার্টারটি কি TOML টেবিলের অ্যারে সমর্থন করে?
হ্যাঁ। `[[name]]` হেডারগুলো `name` কী-এর অধীনে YAML সিকোয়েন্স উপাদান হয়, টেবিলের ক্রম সংরক্ষণ করে।
YAML আউটপুট কি আমার TOML মন্তব্য রাখবে?
না। TOML মন্তব্য পার্সার দ্বারা সরিয়ে দেওয়া হয়। প্রয়োজন হলে YAML আউটপুটে হাতে মন্তব্য যোগ করুন।
TOML তারিখগুলো YAML-এ কীভাবে উপস্থাপিত হয়?
তারিখ এবং ডেটটাইম একই ISO উপস্থাপনাসহ YAML স্ট্রিং হয়। বেশিরভাগ YAML কনজিউমার তাদের ভাষার তারিখ লাইব্রেরি দিয়ে সেগুলো পার্স করে।
TOML-এর ইনলাইন টেবিল সম্পর্কে কী?
সেগুলো একক লাইনে নেস্টেড YAML ম্যাপিং হয়। কিছু স্টাইল গাইড পঠনযোগ্যতার জন্য ব্লক স্টাইল প্রয়োজন; আপনার লিন্টার অভিযোগ করলে ম্যানুয়ালি রূপান্তর করুন।
আউটপুট স্ট্রিংগুলোর চারপাশে ডাবল কোট কেন ব্যবহার করে?
YAML সিঙ্গেল-কোটেড স্ট্রিং এস্কেপ সিকোয়েন্স নিষিদ্ধ করে এবং YAML প্লেইন স্কেলারে সংরক্ষিত কীওয়ার্ড থাকে; নির্বিচারে টেক্সট রাউন্ড-ট্রিপ করার জন্য ডাবল কোট সবচেয়ে নিরাপদ ডিফল্ট।
আমার TOML কি আপলোড হয়?
না। smol-toml এর মাধ্যমে পার্সিং এবং js-yaml এর মাধ্যমে YAML নির্গমন স্থানীয়ভাবে ঘটে। সার্ভারে কিছুই পাঠানো হয় না।