TOML Ayrıştırıcı

TOML (Tom's Obvious Minimal Language), okunması ve yazılması kolay olacak şekilde tasarlanmış minimal bir yapılandırma dosyası formatıdır. Rust (Cargo.toml), Python paketleme (pyproject.toml) ve birçok modern geliştirme aracı için standart yapılandırma formatıdır.

Spesifikasyonlar

Yaygin Kullanim Alanlari

  • Rust proje bağımlılıkları ve meta verileri için Cargo.toml ayrıştırma
  • Python derleme yapılandırması için pyproject.toml okuma (PEP 518/621)
  • Hugo, Zola veya diğer statik site oluşturucu yapılandırmalarını işleme
  • Deno yapılandırma dosyalarını düzenleme (deno.toml)
  • Dağıtım öncesi yapılandırmayı doğrulama

Ozellikler

  • Tam TOML v1.0.0 spesifikasyonu desteği
  • Tabloları, tablo dizilerini ve iç içe yapıları ayrıştırma
  • Satır içi tabloları ve dizileri işleme
  • Tarih/saat değerleri desteği
  • JSON, YAML veya XML'e dönüştürme
  • Hata mesajlarıyla sözdizimi doğrulama

Ornekler

Rust Cargo.toml

Deneyin →

Paket meta verilerini ve bağımlılıkları tanımlayan bir Cargo manifestosu.

[package]
name = "my-project"
version = "0.1.0"
edition = "2021"

[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }

Python pyproject.toml

Deneyin →

Derleme sistemi ve meta veriler içeren bir Python proje yapılandırması.

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "my-package"
version = "1.0.0"
dependencies = ["requests>=2.28"]

Ipuclari

  • TOML, anahtar-değer çiftleri için = kullanır; YAML'ın iki noktasından farklıdır.
  • Dizeler tırnak içinde olmalıdır. Çok satırlı dizeler için """ kullanın.
  • Tablolar ([table]) iç içe yapılar oluşturur.
  • Tablo dizileri [[array]] sözdizimini kullanır.

Anlama TOML Ayrıştırıcı

TOML (Tom's Obvious Minimal Language), belirsiz olmayan ve okunması kolay bir yapılandırma dosyası formatıdır. Tom Preston-Werner (GitHub'un kurucu ortağı) tarafından oluşturulan TOML, bir hash tablosuna temiz bir şekilde eşlenir ve kasıtlı olarak YAML'dan daha basit, INI dosyalarından daha ifade edicidir. Sürüm 1.0.0, 2021'de sonuçlandırılmıştır.

TOML'un tasarımı netlik üzerine kuruludur. Anahtarlar ve değerler basit bir "key = value" sözdizimi kullanır. Tablolar (bölümler) [köşeli parantezler] ile belirtilir ve girinti duyarlılığı olmadan iç içe yapılar oluşturur. Tablo dizileri, tekrarlanan bölümleri tanımlamak için [[çift köşeli parantez]] kullanır. TOML, dizeler, tam sayılar, kayan noktalı sayılar, boolean'lar, tarihler, saatler ve tarih-saatleri birinci sınıf türler olarak doğal olarak destekleyerek JSON ve YAML'da yaygın olan ayrıştırma belirsizliğini ortadan kaldırır.

Rust ekosistemi, Cargo.toml'u paket manifesto formatı olarak kullanarak TOML'u erken benimsemiştir. Python, pyproject.toml (PEP 518 ve PEP 621) ile takip ederek onu setup.py ve setup.cfg'nin modern yerine geçen haline getirmiştir. TOML ayrıca Go araçlarında, Deno'da (deno.toml), Hugo'da ve açık, okunabilir yapılandırmaya değer veren birçok geliştirici aracında da görülür.

TOML, esnekliği öngörülebilirlikle takas eder. YAML'dan farklı olarak, her veri yapısını temsil etmenin yalnızca bir yolu vardır. Çapa yok, takma ad yok, örtük tür dönüştürme sürprizleri yok ve anlamlı boşluk yok. Dezavantajı, derinden iç içe yapıların ayrıntılı hale gelmesidir çünkü her seviye kendi tablo başlığını gerektirir.

TOML, insanların sıkça düzenlediği düz veya orta derecede iç içe yapılandırma dosyaları için mükemmeldir. Belirsiz olmayan sözdizimi, boolean dönüştürme ve girinti hataları gibi YAML tuzaklarından kaçınırken yapılandırma amaçları için JSON'dan daha okunabilirdir. TOML, proje manifestoları (Cargo.toml, pyproject.toml) ve araç yapılandırması için doğal tercihtir. YAML, Kubernetes manifestoları gibi derinden iç içe yapılar için daha uygun olmaya devam eder ve JSON, sistemler arası veri alışverişi için standarttır.

[[Çift köşeli parantez]] sözdizimi, her başlık oluşumunun diziye yeni bir eleman eklediği tablo dizileri oluşturur. Örneğin, üç kez görünen [[products]], her biri sırasıyla toplanan kendi anahtar-değer çiftlerine sahip üç ürün nesnesinden oluşan bir dizi oluşturur. TOML ayrıca hash sembolü (#) kullanan tek satırlık yorumları destekler; bunlar kendi satırlarında veya bir değerden sonra görünebilir. Çok satırlı yorum sözdizimi yoktur, ancak tek satırlık varyant yine de hiç yorum desteği olmayan JSON'a göre önemli bir avantajdır.

Tablolar ve satır içi tablolar farklı amaçlara hizmet eder. Tablolar [başlık] sözdizimini kullanır ve birden fazla satıra yayılarak çok anahtarlı bölümler için okunabilirlik sağlar. Satır içi tablolar tek bir satırda süslü parantez kullanır (key = { a = 1, b = 2 }) ve tamamen o tek satırda tanımlanmalıdır — tanımdan sonra genişletilemez. Genel kural olarak, bir bölümde iki veya üçten fazla anahtar olduğunda okunabilirlik için standart tabloları kullanın.

← Tum araclara don