parsetoml

Library for parsing TOML files.

Pure Nim score 15/100 · tests present · no docs generated

Summary

Latest Version Unknown
License MIT
CI Status Failing
Downloads 0
Last Indexed 2026-07-21 05:24

Tags

Installation

nimble install parsetoml
choosenim install parsetoml
git clone https://github.com/NimParsers/parsetoml.git

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
parsetoml - - - - - - -

Source

Repository https://github.com/NimParsers/parsetoml.git
Homepage https://github.com/NimParsers/parsetoml
Registry Source nimble_official

README

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 of TomlValueRef values.
  • getTable : Get a TomlTableRef 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.