NimToml
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.
Installation
Use nimble
to install it:
nimble install parsetoml
Documentation
https://nimparsers.github.io/parsetoml/
Usage
Below are just few snippets of code to show some basic usage of this library. Refer to the above linked documentation for complete details.
Importing the library
import parsetoml
Parsing TOML content
let table1 = parsetoml.parseString("""
[input]
file_name = "test.txt"
[output]
verbose = true
""")
let table2 = parsetoml.parseFile(f)
let table3 = parsetoml.parseFile("test.toml")
Using the parsed content
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 ofTomlValueRef
values.getTable
: Get aTomlTableRef
value.
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")
Transforming the parsed date to JSON / Table
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)
License
Parsetoml is released under a MIT license.