Tomlyn 0.17.0

dotnet add package Tomlyn --version 0.17.0
NuGet\Install-Package Tomlyn -Version 0.17.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Tomlyn" Version="0.17.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Tomlyn --version 0.17.0
#r "nuget: Tomlyn, 0.17.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Tomlyn as a Cake Addin
#addin nuget:?package=Tomlyn&version=0.17.0

// Install Tomlyn as a Cake Tool
#tool nuget:?package=Tomlyn&version=0.17.0

Tomlyn Build Status Coverage Status NuGet

<img align="right" width="160px" height="160px" src="img/logo.png">

Tomlyn is a TOML parser, validator and authoring library for .NET Framework and .NET Core.

What is TOML?

A config file format for humans. TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics. TOML is designed to map unambiguously to a hash table. TOML should be easy to parse into data structures in a wide variety of languages.

Features

  • Very fast parser, GC friendly.
  • Compatible with the latest TOML v1.0.0 specs.
  • Allow to map a TOML string to a default runtime model via Toml.ToModel(string)
  • Allow to map a TOML string to a custom runtime model via Toml.ToModel<T>(string)
    • Very convenient for loading custom configurations for example.
  • Allow to generate a TOML string from a runtime model via string Toml.FromModel(object)
    • Preserve comments, by default with the default runtime model, or by implementing the ITomlMetadataProvider.
  • Allow to parse to a DocumentSyntax via Toml.Parse(string).
    • Preserve all spaces, new line, comments but also invalid characters/tokens.
    • Can roundtrip to text with exact representation.
  • Provides a validator with the Toml.Validate method.
  • Supports for .NET Standard 2.0+ and provides an API with nullable annotations.

Documentation

See the documentation for more details.

Install

Tomlyn is delivered as a NuGet Package.

Usage

var toml = @"global = ""this is a string""
# This is a comment of a table
[my_table]
key = 1 # Comment a key
value = true
list = [4, 5, 6]
";

// Parse the TOML string to the default runtime model `TomlTable`
var model = Toml.ToModel(toml);
// Fetch the string
var global = (string)model["global"]!;
// Prints: found global = "this is a string"
Console.WriteLine($"found global = \"{global}\"");
// Generates a TOML string from the model
var tomlOut = Toml.FromModel(model);
// Output the generated TOML
Console.WriteLine(tomlOut);

This will print the original TOML by preserving most the comments:

global = "this is a string"
# This is a comment of a table
[my_table]
key = 1 # Comment a key
value = true
list = [4, 5, 6]

NOTICE: By default, when mapping to a custom model, Tomlyn is using the PascalToSnakeCase naming convention (e.g ThisIsFine to this_is_fine). This behavior can be changed by overriding the TomlModelOptions.ConvertPropertyName delegate.

License

This software is released under the BSD-Clause 2 license.

Credits

Modified version of the logo Thor by Mike Rowe from the Noun Project (Creative Commons)

Author

Alexandre Mutel aka xoofx.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.
  • net7.0

    • No dependencies.

NuGet packages (16)

Showing the top 5 NuGet packages that depend on Tomlyn:

Package Downloads
DafnyCore

Package Description

Deislabs.Bindle

Provides a client for Bindle.WARNING: Bindle is experimental. It is not considered production-grade by its developers, neither is it "supported" software.

ROFSDB

Package Description

Tomlyn.Extensions.Configuration

TomlConfigurationProvider using Tomlyn

Hippo.Infrastructure

Package Description

GitHub repositories (11)

Showing the top 5 popular GitHub repositories that depend on Tomlyn:

Repository Stars
dafny-lang/dafny
Dafny is a verification-aware programming language
microsoft/Oryx
Build your repo automatically.
xoofx/dotnet-releaser
Easily build, run tests and coverage, cross-compile, package and publish your .NET library or application to NuGet and GitHub.
rwmt/Multiplayer
Zetrith's Multiplayer mod for RimWorld
exercism/csharp
Exercism exercises in C#.
Version Downloads Last updated
0.17.0 52,262 11/23/2023
0.16.2 428,964 12/22/2022
0.16.1 35,564 10/27/2022
0.16.0 23,596 10/20/2022
0.15.1 32,857 10/13/2022
0.15.0 211,793 7/1/2022
0.14.4 2,727 6/21/2022
0.14.3 538,251 5/9/2022
0.14.2 40,732 4/21/2022
0.14.1 1,203 4/3/2022
0.14.0 4,867 3/10/2022
0.13.1 1,045 3/6/2022
0.13.0 990 3/5/2022
0.12.1 966 3/5/2022
0.12.0 1,555 2/27/2022
0.11.0 1,538 2/14/2022
0.10.2 2,453 2/1/2022
0.10.1 1,156 1/31/2022
0.10.0 1,519 1/27/2022
0.9.1 1,219 1/25/2022
0.9.0 1,225 1/25/2022
0.4.1 1,160 1/23/2022
0.4.0 1,158 1/23/2022
0.3.1 1,318 1/14/2022
0.3.0 1,195 1/14/2022
0.1.2 1,190,922 3/8/2020
0.1.1 9,028 2/13/2019
0.1.0 1,461 2/12/2019