Knihovna RStein.TOML pod MIT licencí
Jeden post o programování, který se netýká ani AI-first a kupodivu ani AI-second kódování. Já si jen vyčistím stůl, když už jsem včera večer knihovnu RStein.TOML pod MIT licencí konečně zveřejnil.
Kdo znáte TOML konfigurační formát, mohlo by vás zajímat, že k dnešku je RStein.TOML jediná knihovna pro .NET (C#), která podporuje čerstvý standard TOML 1.1. Můj "recursive descent" parser podporuje všechny syntaktické nuance TOMLu 1.0 i 1.1, které testují platformně nezávislé testy pro TOML. Knihovna je kompilována pro .NET 10, .NET 9, .NET Framework 4.8 a pro ostatní je tu i podpora .NET Standardu 2.0.
Kdo TOML nezná. TOML je poměrně hezký formát pro konfigurační soubory, který se vám bude líbit, jestliže chcete formát, který je podobný formátu starých špatných ini souborů, nemusíte úplně JSON a nabili jste si ústa třeba při používání YAMLu.
Přesněji řečeno, ini soubory lze považovat za podmnožinu souborů, které zpracujete pomocí TOML parseru.
Jednoduchý TOML soubor může vypadat takto:
[table-1]
key1 = "some string"
key2 = 123
[table-2]
key1 = "another string"
key2 = 456
TOML ale podporuje i vnořené tabulky, inline tabulky, pole a pole tabulek. Mohu vás ujistit, že zdánlivá jednoduchost TOML formátu při pohledu do TOML souboru se nepropisuje do jednoduchosti parseru. Zvláště pikantní je třeba ošetření redefinice tabulek na různých úrovních, nebo v "recursive descent" parseru, který "vidí" jen aktuální a následující znak dokumentu, rozlišení mezi tím, jestli parsujeme decimální integer, hex integer, bin integer, float nebo různé formáty data. Ostatně ABNF dokument pro TOML mluví sám za sebe.
Víc konstrukcí z TOMLu.
# What you see is what you get.
winpath = 'C:\Users\nodejs\templates'
winpath2 = '\\ServerX\admin$\system32\'
quoted = 'Tom "Dubs" Preston-Werner'
regex = '<\i\c*\s*>'
str4 = """Here are two quotation marks: "". Simple enough."""
# str5 = """Here are three quotation marks: """.""" # INVALID
str5 = """Here are three quotation marks: ""\"."""
str6 = """Here are fifteen quotation marks: ""\"""\"""\"""\"""\"."""
# "This," she said, "is just a pointless statement."
str7 = """"This," she said, "is just a pointless statement.""""
integers = [ 1, 2, 3 ]
colors = [ "red", "yellow", "green" ]
nested_arrays_of_ints = [ [ 1, 2 ], [3, 4, 5] ]
nested_mixed_array = [ [ 1, 2 ], ["a", "b", "c"] ]
string_array = [ "all", 'strings', """are the same""", '''type''' ]
numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ] ]
(Suffix '_P' v názvu repository je nepřekvapivě označením této public verze. Knihovna původně vznikla pro konfiguraci mých "smart home" zařízení. Pak jsem na jednom projektu zjistil, že mohu TOML používat jako "lingua franca" pro různé dialekty konfigurací, které se ve firmě za nějakých 30 LET nashromáždily. A neveřejný parser dokáže pracovat s mnoha "dialekty" - různými mizerně nebo nijak specifikovanými formáty, pro které jsou potřeba speciální parsery. A jejich gramatiku dokáže Claude AI po jemném bičování rozpoznat a navrhnout docela solidně. Ale to už je úplně jiný a uznávám, že i zajímavější příběh - ale je to příběh pod NDA. :) )
Jestli jste to dočetli až sem, děkuju za pozornost. :)
Hvězdičky vítány, pull requesty také.
RStein.TOML
https://github.com/renestein/RStein.TOML_P
API doc
https://renestein.github.io/RStein.TOML_P/api/RStein.TOML.html
TOML formát
https://toml.io/en/
ABNF TOMLu
https://github.com/toml-lang/toml/blob/1.1.0/toml.abnf
Wednesday, 25 February 2026 11:01:12 (Central Europe Standard Time, UTC+01:00)