TOML Parser for Node.js

Build Status

NPM

If you haven’t heard of TOML, well you’re just missing out. Go check it out now. Back? Good.

TOML Spec Support

toml-node supports version 0.4.0 the TOML spec as specified by mojombo/toml@v0.4.0

Installation

toml-node is available via npm.

  1. npm install toml

toml-node also works with browser module bundlers like Browserify and webpack.

Usage

Standalone

Say you have some awesome TOML in a variable called someTomlString. Maybe it came from the web; maybe it came from a file; wherever it came from, it came asynchronously! Let’s turn that sucker into a JavaScript object.

  1. var toml = require('toml');
  2. var data = toml.parse(someTomlString);
  3. console.dir(data);

toml.parse throws an exception in the case of a parsing error; such exceptions have a line and column property on them to help identify the offending text.

  1. try {
  2. toml.parse(someCrazyKnuckleHeadedTrblToml);
  3. } catch (e) {
  4. console.error("Parsing error on line " + e.line + ", column " + e.column +
  5. ": " + e.message);
  6. }

Streaming

As of toml-node version 1.0, the streaming interface has been removed. Instead, use a module like concat-stream:

  1. var toml = require('toml');
  2. var concat = require('concat-stream');
  3. var fs = require('fs');
  4. fs.createReadStream('tomlFile.toml', 'utf8').pipe(concat(function(data) {
  5. var parsed = toml.parse(data);
  6. }));

Thanks @ForbesLindesay for the suggestion.

Requiring with Node.js

You can use the toml-require package to require() your .toml files with Node.js

Live Demo

You can experiment with TOML online at http://binarymuse.github.io/toml-node/, which uses the latest version of this library.

Building & Testing

toml-node uses the PEG.js parser generator.

  1. npm install
  2. npm run build
  3. npm test

Any changes to src/toml.peg requires a regeneration of the parser with npm run build.

toml-node is tested on Travis CI and is tested against:

  • Node 0.10
  • Node 0.12
  • Latest stable io.js

License

toml-node is licensed under the MIT license agreement. See the LICENSE file for more information.