Analyseur TOML

TOML (Tom's Obvious Minimal Language) est un format de fichier de configuration minimal conçu pour être facile à lire et écrire. C'est le format de configuration standard pour Rust (Cargo.toml), l'empaquetage Python (pyproject.toml) et de nombreux autres outils de développement modernes.

Specifications

Cas d'utilisation courants

  • Analyser Cargo.toml pour les dépendances et métadonnées de projets Rust
  • Lire pyproject.toml pour la configuration de build Python (PEP 518/621)
  • Traiter les configs Hugo, Zola ou autres générateurs de sites statiques
  • Éditer les fichiers de configuration Deno (deno.toml)
  • Valider la configuration avant le déploiement

Fonctionnalites

  • Prise en charge complète de la spécification TOML v1.0.0
  • Analyser les tables, tableaux de tables et structures imbriquées
  • Gérer les tables et tableaux en ligne
  • Prise en charge des valeurs date/heure
  • Convertir en JSON, YAML ou XML
  • Validation de syntaxe avec messages d'erreur

Exemples

Rust Cargo.toml

Essayer →

Un manifeste Cargo définissant les métadonnées du package et les dépendances.

[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

Essayer →

Une configuration de projet Python avec système de build et métadonnées.

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

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

Conseils

  • TOML utilise = pour les paires clé-valeur, contrairement aux deux-points de YAML.
  • Les chaînes doivent être entre guillemets. Utilisez """ pour les chaînes multi-lignes.
  • Les tables ([table]) créent des structures imbriquées.
  • Les tableaux de tables utilisent la syntaxe [[tableau]].

Comprendre Analyseur TOML

TOML (Tom's Obvious Minimal Language) est un format de fichier de configuration conçu pour être non ambigu et facile à lire. Créé par Tom Preston-Werner (co-fondateur de GitHub), TOML se mappe proprement sur une table de hachage et est intentionnellement plus simple que YAML tout en étant plus expressif que les fichiers INI. La version 1.0.0 a été finalisée en 2021.

La conception de TOML est centrée sur la clarté. Les clés et valeurs utilisent une syntaxe simple "clé = valeur". Les tables (sections) sont délimitées par des [crochets], créant des structures imbriquées sans sensibilité à l'indentation. Les tableaux de tables utilisent des [[doubles crochets]] pour définir des sections répétées. TOML prend nativement en charge les chaînes, entiers, flottants, booléens, dates, heures et dates-heures comme types de première classe, éliminant l'ambiguïté d'analyse courante en JSON et YAML.

L'écosystème Rust a adopté TOML très tôt avec Cargo.toml comme format de manifeste de package. Python a suivi avec pyproject.toml (PEP 518 et PEP 621), en faisant le remplacement moderne de setup.py et setup.cfg. TOML apparaît également dans les outils Go, Deno (deno.toml), Hugo et de nombreux autres outils de développement qui valorisent une configuration explicite et lisible.

TOML échange la flexibilité contre la prévisibilité. Contrairement à YAML, il n'y a qu'une seule façon de représenter chaque structure de données. Il n'y a pas d'ancres, pas d'alias, pas de surprises de coercition de type implicite et pas d'espacement significatif. Le compromis est que les structures profondément imbriquées deviennent verbeuses, car chaque niveau nécessite son propre en-tête de table.

TOML excelle pour les fichiers de configuration plats ou modérément imbriqués que les humains éditent fréquemment. Sa syntaxe non ambiguë évite les pièges de YAML comme la coercition booléenne et les erreurs d'indentation, tout en étant plus lisible que JSON pour les besoins de configuration. TOML est le choix naturel pour les manifestes de projet (Cargo.toml, pyproject.toml) et la configuration d'outils. YAML reste mieux adapté pour les structures profondément imbriquées comme les manifestes Kubernetes, et JSON est le standard pour l'échange de données entre systèmes.

La syntaxe [[doubles crochets]] crée des tableaux de tables, où chaque occurrence de l'en-tête ajoute un nouvel élément au tableau. Par exemple, [[products]] apparaissant trois fois crée un tableau de trois objets product, chacun avec ses propres paires clé-valeur collectées dans l'ordre. TOML prend également en charge les commentaires sur une ligne en utilisant le symbole dièse (#), qui peut apparaître sur sa propre ligne ou après une valeur. Il n'y a pas de syntaxe de commentaire multi-lignes, mais la variante mono-ligne reste un avantage significatif par rapport à JSON, qui n'a aucun support de commentaires.

Les tables et les tables en ligne servent des objectifs différents. Les tables utilisent la syntaxe [en-tête] et s'étendent sur plusieurs lignes, les rendant lisibles pour les sections avec de nombreuses clés. Les tables en ligne utilisent des accolades sur une seule ligne (clé = { a = 1, b = 2 }) et doivent être définies entièrement sur cette ligne — elles ne peuvent pas être étendues après définition. En règle générale, utilisez les tables standard pour la lisibilité lorsqu'une section a plus de deux ou trois clés.

← Retour a tous les outils