Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/evilncrazy/ctoml

Fast TOML parser written in C++
https://github.com/evilncrazy/ctoml

Last synced: 3 months ago
JSON representation

Fast TOML parser written in C++

Awesome Lists containing this project

README

        

Ctoml
=====

A statically typed parser for @mojombo's TOML, written in C++11. Currently supports commit c6ea50d of the TOML spec, with a few exceptions:

* Unicode support for strings
* Null characters ('\0') in string literals

Usage
=====

```c
#include "toml.h"

#include

using namespace ctoml;

int main() {
TomlParser toml("example.toml");
auto doc = toml.parse();

// Get the value of a key
auto val = doc.get("potatoe.cake");

// You can print it out
std::cout << val->to_string() << std::endl;

// Or check equality
if (val->equals("foobar")) {
// ....
}

// To use the primitive value of a key, you can do:
std::cout << doc.get_as("pi") * 2 << std::endl;

// We can iterate through all the keys
for (auto it = doc.cbegin(); it != doc.cend(); ++it) {
std::cout << it->first << " = " << it->second->to_string() << std::endl;
}

// We can modify the document on the fly
doc.set("title", TomlValue::create_string("Hello world!"));

// You can even write the document to a stream
doc.write(std::cout);
}
```

Command line tool
=================

A command line tool that parses TOML is provided (src/main.cc). It can take a file as input. If the parse is successful, it spews out every key and its value.

```
./ctoml "path/to/file"
```

Licence
=======
This software is released under the MIT licence (see LICENCE).

Todo
====

* Needs more powerful write to stream methods
* Write only certain key groups to a stream