TOML کو YAML میں تبدیل کرنے کا سب سے تیز طریقہ yq -oy '.' file.toml ہے۔ دستی تبدیلی کے لیے، TOML کے [table] ہیڈروں کو YAML کے انڈینٹڈ بلاکس سے ملائیں، TOML کی اریز کو ڈیش سے شروع ہونے والی فہرستوں سے بدلیں، اور مبہم اسٹرنگز کو ہمیشہ کوٹ میں رکھیں تاکہ “ناروے مسئلہ” سے بچا جا سکے۔
فوری تبدیلی: yq CLI کا استعمال
TOML (Tom’s Obvious, Minimal Language) نے دسمبر 2025 میں اپنا v1.1.0 ورژن جاری کیا، لیکن YAML اب بھی CI/CD پائپ لائنز اور Kubernetes مینی فیسٹس کے لیے معیار ہے۔ yq ٹول ایک ہی کمانڈ میں تبدیلی سنبھال لیتا ہے۔
yq انسٹال کریں
| پلیٹ فارم | کمانڈ |
|---|---|
| macOS/Linux | brew install yq |
| Windows | choco install yq |
| Python (pip) | pip install yq |
رفتار کے لیے Mike Farah کا Go پر مبنی ورژن ترجیحی ہے۔ جیسا کہ Mike Farah کی yq دستاویزات میں noted ہے، یہ ٹول TOML اسٹرکچر کو ڈی کوڈ کرتا ہے اور اسے صاف YAML کے طور پر دوبارہ انکوڈ کرتا ہے۔
تبدیلی چلائیں
ٹرمینل میں دکھائیں:
yq -oy '.' your-config.toml
فائل میں محفوظ کریں:
yq -oy '.' your-config.toml > your-config.yaml
-oy فلیگ آؤٹ پٹ فارمیٹ کو YAML پر سیٹ کرتا ہے۔ یہ کلیدی-قدر جوڑے، نیسٹڈ ٹیبلز، اور اریز کو سنبھال لیتا ہے۔

نحوی ترجمہ نقشہ: TOML اسٹرکچر سے YAML تک
ڈویلپر Drew DeVault نے نوٹ کیا ہے کہ اگرچہ TOML مقبول ہے، YAML گہری نیسٹنگ کو زیادہ صاف ساتھ سنبھالتا ہے۔ یہاں عین نقشہ دیا گیا ہے:
ٹیبلز سے انڈینٹڈ کلیدوں تک
TOML بریکٹ ہیڈرز استعمال کرتا ہے؛ YAML انڈینٹیشن استعمال کرتا ہے۔
| TOML | YAML |
|---|---|
[server] |
server: |
host = "127.0.0.1" |
host: 127.0.0.1 |
port = 8080 |
port: 8080 |
اہم فرق: TOML میں انڈینٹیشن صرف ظاہری ہے۔ YAML میں انڈینٹیشن اسٹرکچرل ہے — ایک غلط اسپیس پوری کنفیگریشن کو خراب کر دیتی ہے۔
اریز سے ڈاش سے شروع ہونے والی فہرستوں تک
TOML: ports = [ 8000, 8001 ]
YAML:
ports:
- 8000
- 8001

جیسا کہ Knightli.com وضاحت کرتا ہے، YAML کا “بلاک اسٹائل” فہرستوں کو پڑھنے کے قابل بناتا ہے، بشرطیکہ عمودی ترتیب مستقل ہو۔
انلائن ٹیبلز اور ڈاٹڈ کلیدز
| TOML اسٹرکچر | YAML مساوی |
|---|---|
[a.b.c] (ڈاٹڈ ہیڈر) |
a: → b: → c: (نیسٹڈ انڈینٹیشن) |
point = { x = 1, y = 2 } (انلائن ٹیبل) |
point: → x: 1 → y: 2 |
حقیقی استعمال کے کیسز
Hugo اسٹیٹک سائٹ کنفیگریشن
Hugo hugo.toml، hugo.yaml، یا hugo.json قبول کرتا ہے۔ زیادہ تر پروجیکٹس TOML (ڈیفالٹ) سے شروع ہوتے ہیں، پھر YAML کی طرف منتقل ہوتے ہیں جب کنفیگریشن کو Netlify یا GitHub Actions جیسے ڈپلائمنٹ پلیٹ فارمز کے ساتھ ہم آہنگ کرنے کی ضرورت ہوتی ہے۔ Hammer Europe نوٹ کرتا ہے کہ hugo کمانڈ ان فائلوں کو پڑھتا ہے تاکہ یہ طے کر سکے کہ Markdown لائیو سائٹ میں کیسے تبدیل ہوتا ہے۔
Python پیکیجنگ: pyproject.toml سے CI/CD YAML تک
Python کمیونٹی نے pyproject.toml کو PEP 518 کے ذریعے معیاری بنایا۔ ان سیٹنگز کو اکثر GitHub Actions CI/CD ورک فلوز کے لیے YAML میں ترجمہ کرنے کی ضرورت ہوتی ہے۔ AI ایجنٹ ورک فلوز کے لیے، CocoIndex رپورٹ کرتا ہے کہ بہتر بنا YAML کنفیگز ٹوکن استعمال کو 70% تک کم کر سکتی ہیں۔
ناروے مسئلہ اور دیگر تبدیلی کی عام غلطیاں
NO ملکی کوڈ کی خامی
YAML 1.1 میں، NO، OFF، اور YES جیسے بنیادی اسٹرنگز خودکار طور پر بولین false یا true میں تبدیل ہو جاتے ہیں۔ TOML اس سے بچتا ہے کیونکہ یہ تمام اسٹرنگز پر کوٹ لازمی قرار دیتا ہے۔ تبدیلی کے دوران، مبہم قدروں کو ہمیشہ YAML میں کوٹ میں رکھیں:
| قدر | YAML 1.1 کی تشریح | حل |
|---|---|---|
NO |
false |
"NO" |
OFF |
false |
"OFF" |
YES |
true |
"YES" |
On |
true |
"On" |
YAML 1.2 (موجودہ اسپیک) ان میں سے زیادہ تر جبر کو ٹھیک کرتا ہے، لیکن بہت سے پارسرز اب بھی ڈیفالٹ طور پر 1.1 رویہ استعمال کرتے ہیں۔

انڈینٹیشن کی غلطیاں
YAML پارسرز غیر مستقل انڈینٹیشن والی فائلوں کو مسترد کر دیتے ہیں۔ عام غلطیاں:
- ٹیبز اور اسپیسز کا ملاپ (YAML ٹیبز سے منع کرتا ہے)
- ایک بلاک میں 3 اسپیسز اور دوسرے میں 2 استعمال کرنا
- غیر ہم آہنگ فہرست آئٹمز
AI کی مدد سے جنریشن
AgentBuilder جیسے ٹولز آپ کو سادہ انگریزی میں کنفیگریشن بیان کرنے اور تصدیق شدہ YAML آؤٹ پٹ دینے کی سہولت دیتے ہیں۔ یہ “بیان کریں → بنائیں → تصدیق کریں” کا چکر انڈینٹیشن غلطیوں اور ناروے مسئلہ دونوں سے بچنے میں مدد کرتا ہے۔
نتیجہ
خودکار تبدیلی کے لیے yq -oy '.' file.toml استعمال کریں۔ دستی کام کے لیے، TOML ٹیبلز کو YAML انڈینٹیشن سے ملائیں، اریز کو ڈاش سے شروع ہونے والی فہرستوں سے بدلیں، اور ایسے اسٹرنگز کو ہمیشہ کوٹ میں رکھیں جنہیں بولین سمجھا جا سکتا ہے۔ کسی بھی تبدیلی کے بعد، ڈپلائے سے پہلے YAML آؤٹ پٹ کی تصدیق کریں — ایک غلط ہم آہنگ اسپیس یا بغیر کوٹ والا NO آپ کی پوری پائپ لائن کو خراب کر سکتا ہے۔
اکثر پوچھے گئے سوالات
کیا YAML TOML کی طرح کمنٹس کی حمایت کرتا ہے؟
ہاں۔ دونوں سنگل لائن کمنٹس کے لیے # استعمال کرتے ہیں۔ YAML کمنٹس ملٹی لائن اسٹرنگ پارسنگ میں رکاوٹ بن سکتی ہیں، اس لیے جب شک ہو تو انہیں الگ لائنوں پر رکھیں۔
YAML میں ناروے مسئلہ کیا ہے؟
YAML 1.1 میں، NO (ناروے کا ملکی کوڈ) جیسے بنیادی اسٹرنگز خودکار طور پر بولین false میں تبدیل ہو جاتے ہیں۔ TOML اس سے بچتا ہے کیونکہ یہ تمام اسٹرنگ قدروں پر کوٹ لازمی قرار دیتا ہے۔ TOML کو YAML میں تبدیل کرتے وقت کسی بھی مبہم اسٹرنگ کو کوٹ میں رکھیں۔
کون سا فارمیٹ گہری نیسٹنگ کو بہتر سنبھالتا ہے؟
YAML۔ TOML کو ہر سطح کے لیے [table.subtable.subsubtable] جیسے لمبے ہیڈرز دہرانے پڑتے ہیں، جو طویل ہو جاتا ہے۔ YAML اسی درجہ بندی کو انڈینٹیشن سے ظاہر کرتا ہے — زیادہ جامع اور گہرائی میں زیادہ پڑھنے کے قابل۔

جواب دیں