C#:
Werken met TOML
Hoe:
Installeer eerst een TOML-parser zoals Tomlyn
. Gebruik je pakketbeheerder:
dotnet add package Tomlyn
Parseer vervolgens een TOML-bestand:
using Tomlyn;
using Tomlyn.Model;
using System;
var tomlContent = @"
[owner]
name = 'Tom Preston-Werner'
dob = 1979-05-27T07:32:00Z";
var tomlTable = Toml.Parse(tomlContent).ToModel();
Console.WriteLine($"Eigenaar: {tomlTable["owner"]["name"]}");
// Output:
// Eigenaar: Tom Preston-Werner
Maak nu TOML aan en schrijf het weg:
using Tomlyn;
using Tomlyn.Syntax;
using System;
using System.IO;
var doc = new DocumentSyntax
{
Tables =
{
new TableSyntax("owner")
{
Items =
{
{ "name", "Tom Preston-Werner" },
{ "dob", "1979-05-27T07:32:00Z" }
}
}
}
};
var tomlString = doc.ToString();
File.WriteAllText("config.toml", tomlString);
Console.WriteLine("TOML weggeschreven naar config.toml");
// Output:
// TOML weggeschreven naar config.toml
Diepere duik:
TOML is gecreëerd door Tom Preston-Werner, de mede-oprichter van GitHub, rond 2013 als reactie op de beperkingen van bestaande formaten zoals YAML en JSON in configuratie-instellingen. Het is specifiek ontworpen voor configuraties met een sterke nadruk op eenvoud en ondubbelzinnigheid.
Alternatieve configuratieformaten omvatten YAML, JSON en XML. Toch valt TOML op vanwege de hogere gebruiksvriendelijkheid, in het bijzonder voor configuratiebestanden waarin vaak met de hand wordt bewerkt. JSON, hoewel alomtegenwoordig, is minder leesbaar voor complexe configuraties, en XML is omslachtig. YAML is qua leesbaarheid vergelijkbaar, maar kan ingewikkeld worden met intensief gebruik van witruimte en kent beveiligingsrisico’s bij bepaalde inhoud.
Wat implementatie betreft, ligt de focus van TOML op een schone afbeelding naar een hash-tabel, waardoor gegevensextractie voorspelbaar wordt. Met de release van versie 1.0.0 heeft TOML zijn specificatie verstevigd, wat de stabiliteit en ondersteuning van tools verbeterde.
Zie ook:
- Officiële TOML GitHub-repo & Spec: github.com/toml-lang/toml
- Tomlyn, de .NET-bibliotheek: github.com/xoofx/Tomlyn