अंतिम अपडेट: अप्रैल 2026
TOML फ़ॉर्मेटिंग क्या है?
TOML (Tom's Obvious Minimal Language) एक कॉन्फ़िगरेशन फ़ाइल प्रारूप है जिसे Tom Preston-Werner ने 2013 में बनाया था। यह सीधे एक hash table से मैप होता है और सभी मानों के लिए स्पष्ट टाइपिंग का उपयोग करता है। एक TOML फ़ॉर्मेटर कच्चे या असंगत शैली वाले TOML को लेकर उसे एकसमान रिक्त स्थान, उचित इंडेंटेशन और मानक कुंजी क्रम के साथ पुनः क्रमबद्ध करता है। परिणाम एक ऐसी फ़ाइल होती है जो आपके पूरे प्रोजेक्ट में समान परंपराओं का पालन करती है, जिससे कॉन्फ़िगरेशन परिवर्तनों को diff में समीक्षा करना आसान हो जाता है।
TOML v1.0.0 विनिर्देश, जो जनवरी 2021 में अंतिम रूप दिया गया, व्याकरण को इतनी कठोरता से परिभाषित करता है कि कोई भी compliant parser एक ही इनपुट से समान डेटा संरचना उत्पन्न करता है। फ़ॉर्मेटिंग TOML फ़ाइल की अर्थपूर्ण सामग्री को नहीं बदलती। यह केवल रिक्त स्थान, कुंजी समूहन और उद्धरण शैली को समायोजित करती है। इसका अर्थ है कि आप TOML फ़ाइलों को अपने अनुप्रयोग के व्यवहार को बाधित करने की चिंता किए बिना स्वतंत्र रूप से फ़ॉर्मेट कर सकते हैं।
JSON के विपरीत, TOML टिप्पणियों, मूल दिनांक-समय प्रकारों और कई स्ट्रिंग प्रारूपों (बेसिक, लिटरल और बहु-पंक्ति) का समर्थन करता है। एक अच्छा फ़ॉर्मेटर टिप्पणियों को सुरक्षित रखता है और इनलाइन तालिकाओं तथा मानक तालिका शीर्षकों के बीच अंतर का सम्मान करता है। यह तालिकाओं के सरणियों को भी सही ढंग से संभालता है, अनुभाग समूहन को बनाए रखता है ताकि फ़ाइल मनुष्यों और उसे उपभोग करने वाले पार्सरों दोनों के लिए पठनीय रहे।
title="My App" version="1.0.0" debug=false [database] host="localhost" port=5432 name="mydb" [database.pool] max_connections=25 timeout=30 [[servers]] name="web" host="web.example.com" [[servers]] name="api" host="api.example.com"
title = "My App" version = "1.0.0" debug = false [database] host = "localhost" port = 5432 name = "mydb" [database.pool] max_connections = 25 timeout = 30 [[servers]] name = "web" host = "web.example.com" [[servers]] name = "api" host = "api.example.com"
TOML Formatter क्यों उपयोग करें?
कॉन्फ़िगरेशन फ़ाइलों में शैली विचलन समय के साथ जमा होता जाता है जब विभिन्न टीम सदस्य उन्हें संपादित करते हैं। टैब और स्पेस आपस में मिल जाते हैं, कुछ कुंजियाँ अनावश्यक रूप से उद्धृत हो जाती हैं, और तालिका अनुभाग अपना दृश्य समूहन खो देते हैं। एक TOML फ़ॉर्मेटर इन सबको एक ही चरण में सामान्य कर देता है।
TOML Formatter के उपयोग के मामले
TOML सिंटैक्स संदर्भ
TOML में संरचनाओं का एक छोटा समुच्चय है। नीचे दी गई तालिका TOML v1.0.0 विनिर्देश में परिभाषित प्रत्येक संरचनात्मक तत्व को सूचीबद्ध करती है। एक फ़ॉर्मेटर इन सभी पर एकसमान रिक्त स्थान और समूहन लागू करता है।
| सिंटैक्स | नाम | टिप्पणियाँ |
|---|---|---|
| key = "value" | Basic key-value pair | Keys are bare or quoted; values are typed |
| [table] | Standard table | Creates a named section (hash table) |
| [a.b.c] | Dotted table | Shorthand for nested tables |
| [[array]] | Array of tables | Each [[name]] block appends to an array |
| key = """...\n""" | Multi-line basic string | Allows newlines, escapes processed |
| key = '''...\n''' | Multi-line literal string | Allows newlines, no escape processing |
| # comment | Comment | Extends to end of line; not in JSON output |
| {inline = true} | Inline table | Single-line table, no newlines allowed |
TOML बनाम JSON बनाम YAML
TOML, JSON और YAML परस्पर समस्याओं को हल करते हैं लेकिन अलग-अलग समझौते करते हैं।
| विशेषता | TOML | JSON | YAML |
|---|---|---|---|
| टिप्पणियाँ | # लाइन टिप्पणियाँ | समर्थित नहीं | # लाइन टिप्पणियाँ |
| टाइप किए गए मान | String, int, float, bool, datetime | String, number, bool, null | अनुमानित (त्रुटि-प्रवण) |
| नेस्टिंग | [table] शीर्षक | घुंघराले कोष्ठक | इंडेंटेशन-आधारित |
| विनिर्देश कठोरता | कठोर (एक पार्स परिणाम) | कठोर (RFC 8259) | शिथिल (अनेक वैध पार्स) |
| दिनांक/समय समर्थन | 4 मूल प्रकार | कोई नहीं (स्ट्रिंग उपयोग करें) | निहित (अस्थिर) |
| अनुगामी अल्पविराम | अनुमत नहीं | अनुमत नहीं | लागू नहीं (कोई अल्पविराम नहीं) |
कोड उदाहरण
नीचे दिए गए उदाहरण विभिन्न भाषाओं और उपकरणों में TOML को प्रोग्रामेटिक रूप से फ़ॉर्मेट करते हैं। प्रत्येक एक फ़ाइल पढ़ता है, उसे पार्स करता है और फ़ॉर्मेटेड संस्करण लिखता है।
import { parse, stringify } from '@iarna/toml'
import fs from 'fs'
const raw = fs.readFileSync('config.toml', 'utf-8')
const doc = parse(raw)
const formatted = stringify(doc)
// stringify() outputs canonical TOML with consistent spacing
fs.writeFileSync('config.toml', formatted)
// Quick one-liner with npx:
// npx taplo fmt config.tomlimport tomllib # Python 3.11+ (read-only)
import tomli_w # pip install tomli-w (write)
# Parse and re-serialize to format
with open("config.toml", "rb") as f:
data = tomllib.load(f)
formatted = tomli_w.dumps(data)
# tomli_w produces sorted keys, consistent quoting, and
# proper whitespace around = signs
print(formatted)
# CLI alternative: taplo fmt config.tomlpackage main
import (
"fmt"
"os"
"github.com/BurntSushi/toml"
"bytes"
)
func main() {
var data map[string]interface{}
_, err := toml.DecodeFile("config.toml", &data)
if err != nil {
fmt.Fprintln(os.Stderr, err) // parse error with line number
os.Exit(1)
}
var buf bytes.Buffer
enc := toml.NewEncoder(&buf)
enc.Indent = " "
enc.Encode(data) // re-serialized with consistent formatting
fmt.Print(buf.String())
}# Install taplo — the standard TOML toolkit cargo install taplo-cli # or: npm install -g @taplo/cli # Format a single file in place taplo fmt config.toml # Format all .toml files in a project taplo fmt # Check formatting without modifying (CI-friendly) taplo fmt --check # Validate TOML syntax without formatting taplo lint config.toml