Parsetoml is a Nim library to parse TOML files (https://github.com/toml-lang/toml). Currently it supports v0.5.0 of the TOML specification. It passes all of the validation tests in the validation suite, including various 0.5.0 examples.
Use nimble to install it:
nimble install parsetoml
https://nimparsers.github.io/parsetoml/
Below are just few snippets of code to show some basic usage of this library. Refer to the above linked documentation for complete details.
import parsetomllet table1 = parsetoml.parseString("""
[input]
file_name = "test.txt"
[output]
verbose = true
""")
let table2 = parsetoml.parseFile(f)
let table3 = parsetoml.parseFile("test.toml")The return value of parseString and parseFile is a reference to
the TomlValue object, TomlValueRef.
Several getter procs are available to query for specific types of
fields for an input TomlValueRef variable:
getStr: Get the string value.getInt: Get the integer value.getFloat: Get the float value.getBool: Get the bool value.getElems: Get a sequence ofTomlValueRefvalues.getTable: Get aTomlTableRefvalue.
Using the same table1 variable from the above example:
# Get the value, or fail if it is not found
let verboseFlag = table1["output"]["verbose"].getBool()
# You can specify a default as well
let input = table1["input"]["file_name"].getStr("some_default.txt")For the validation this library needs to output JSON. Therefore it has
a proc to convert the TomlValueRef to JSON nodes.
import parsetoml, json
let table1 = parsetoml.parseString("""
[input]
file_name = "test.txt"
[output]
verbose = true
""")
echo table1.toJson.pretty()Above outputs:
{
"input": {
"file_name": {
"type": "string",
"value": "test.txt"
}
},
"output": {
"verbose": {
"type": "bool",
"value": "true"
}
}
}To see the parsed TOML in an alternative Nim AST style indented
format, use parsetoml.dump(table1.getTable()) with the above
example, and you will get:
input = table
file_name = string("test.txt")
output = table
verbose = boolean(true)
Parsetoml is released under a MIT license.