1/mattyhall/tomlz v0.14

A toml parser for Zig


tomlz

A TOML parser for Zig targeting TOML v1.0.0, an easy API and safety.

var gpa = std.heap.page_allocator;
var table = try parser.parse(gpa,
    \\foo = 1
    \\bar = 2

);
defer table.deinit(gpa);

table.getInteger("foo").?; // 1


// --- or ---
const S = struct { foo: i64, bar: i64 };
const s = try parser.decode(S, gpa,
  \\foo = 1
  \\bar = 2
);

Current status

All types other than datetimes are supported. We pass 321/334 of the toml tests 11 of those are due to not having datetime support and the other two are minor lexing issues (allowing whitespace between the square brackets of an array header).

We allow both parsing into a special TOML type, a Table, but also support decoding into a struct directly - including types that must be allocated like arrays and strings.

Installation

tomlz supports being a vendored dependency, zigmod and gyro.

zigmod

To use in a project where your dependencies are handled by zigmod you can simply run:

$ zigmod aq add 1/mattyhall/tomlz
$ zigmod fetch

and import using

const tomlz = @import("tomlz");

An example is available.

gyro

To use in a project where your dependencies are handled by gyro you can simply run:

$ gyro add mattyhall/tomlz
$ gyro fetch

An example is available.

Submodule

To add as a package a common approach is to clone this repository as a submodule in your own, and then add it as a package in build.zig like so:

    const exe = b.addExecutable("simple", "src/main.zig");
    exe.setTarget(target);
    exe.setBuildMode(mode);
    exe.addPackagePath("tomlz", "third_party/tomlz/src/main.zig");
    exe.install();

Usage

Table

We currently provide a single entry point for parsing which returns a toml Table type. This type has helper methods for getting values out:

var gpa = std.heap.page_allocator;
var table = try parser.parse(gpa,
    \\int = 1
    \\float = 2.0
    \\boolean = true
    \\string = "hello, world"
    \\array = [1, 2, 3]
    \\table = { subvalue = 1, we.can.nest.keys = 2 }
);
defer table.deinit(gpa);

table.getInteger("int");
table.getFloat("float");
table.getBool("boolean");
table.getString("string");
table.getArray("array");
table.getTable("table");

A simple example is provided.

Decode

var gpa = std.heap.page_allocator;
const TripleCrowns = struct { worlds: i64, masters: i64, uks: i64 };

const Player = struct {
    name: []const u8,
    age: i64,
    hobbies: []const []const u8,
    triplecrowns: TripleCrowns,

    const Self = @This();

    pub fn deinit(self: *Self, gpa: std.mem.Allocator) void {
        gpa.free(self.name);

        for (self.hobbies) |hobby| {
            gpa.free(hobby);
        }
        gpa.free(self.hobbies);
    }
};

const Game = struct {
    name: []const u8,
    goat: Player,

    const Self = @This();

    pub fn deinit(self: *Self, gpa: std.mem.Allocator) void {
        gpa.free(self.name);
        self.goat.deinit(gpa);
    }
};

var s = try parser.decode(Game, gpa,
    \\name = "snooker"
    \\
    \\[goat]
    \\name = "Ronnie o' Sullivan"
    \\age = 46 # as of Nov 2022
    \\hobbies = ["running", "hustling at pool"]
    \\
    \\[goat.triplecrowns]
    \\worlds = 7
    \\masters = 7
    \\uks = 7
);
defer s.deinit(gpa);
``

## Goals and non-goals
Goals and non-goals are subject to change based on how the project is used and
my own time constraints. If you feel a goal or non-goal isn't quite right please
open an issue and we can discuss it.

### Goals
- TOML v1.0.0. The datetime portion of this is probably going to be
  unachievable until Zig gets a good standard library type for it or a library
  gets dominance. Other than that however we should pass all the
  [tests](https://github.com/BurntSushi/toml-test)
- A nice API. Getting values from the `Value` type should be painless as
  possible and we should also provide deserialising a `Table` into a struct,
  similarly to how `std.json` does it
- Easy installation. We should try to make using the library as a vendored
  dependency and as a package - on e.g. [gyro](https://github.com/mattnite/gyro)
  \- as easy as possible
- Safety. The parser should never crash no matter the input. To achieve this we
  should run fuzzing against it
- Support Zig master and the latest tagged release until Zig v1.0. This will be
  done by having the main branch track Zig master and a branch for each Zig
  release. Any improvements should be backported to the most recent release
  branch
- Good error messages

### Non-goals
- Super duper performance. We want to be as performant as possible without
  making the code harder to read. It is unlikely that parsing a TOML file is
  going to be the bottleneck in your application so "good" performance should be
  sufficient
- Previous versions of TOML

Package Contents

  • gyro.zzz
  • .gitattributes
  • .github/workflows/build.yml
  • examples/gyro/gyro.zzz
  • examples/gyro/gyro.lock
  • examples/gyro/build.zig
  • examples/gyro/src/main.zig
  • examples/zigmod/zigmod.lock
  • examples/zigmod/build.zig
  • examples/zigmod/zigmod.yml
  • examples/zigmod/src/main.zig
  • examples/simple/build.zig
  • examples/simple/src/main.zig
  • build.zig
  • zigmod.yml
  • flake.lock
  • tests/invalid/table/rrbrace.toml
  • tests/invalid/table/equals-sign.toml
  • tests/invalid/table/duplicate-table-array.toml
  • tests/invalid/table/whitespace.toml
  • tests/invalid/table/nested-brackets-close.toml
  • tests/invalid/table/nested-brackets-open.toml
  • tests/invalid/table/array-missing-bracket.toml
  • tests/invalid/table/append-with-dotted-keys-1.toml
  • tests/invalid/table/with-pound.toml
  • tests/invalid/table/quoted-no-close.toml
  • tests/invalid/table/empty.toml
  • tests/invalid/table/redefine.toml
  • tests/invalid/table/duplicate-key-dotted-table2.toml
  • tests/invalid/table/array-implicit.toml
  • tests/invalid/table/duplicate-table-array2.toml
  • tests/invalid/table/llbrace.toml
  • tests/invalid/table/append-with-dotted-keys-2.toml
  • tests/invalid/table/duplicate.toml
  • tests/invalid/table/array-empty.toml
  • tests/invalid/table/duplicate-key-dotted-table.toml
  • tests/invalid/table/empty-implicit-table.toml
  • tests/invalid/table/text-after-table.toml
  • tests/invalid/table/duplicate-key-table.toml
  • tests/invalid/key/duplicate-keys.toml
  • tests/invalid/key/after-table.toml
  • tests/invalid/key/multiline.toml
  • tests/invalid/key/without-value-2.toml
  • tests/invalid/key/dotted-redefine-table.toml
  • tests/invalid/key/escape.toml
  • tests/invalid/key/after-array.toml
  • tests/invalid/key/after-value.toml
  • tests/invalid/key/two-equals.toml
  • tests/invalid/key/start-dot.toml
  • tests/invalid/key/space.toml
  • tests/invalid/key/without-value-3.toml
  • tests/invalid/key/without-value-1.toml
  • tests/invalid/key/open-bracket.toml
  • tests/invalid/key/newline.toml
  • tests/invalid/key/quoted-unclosed-1.toml
  • tests/invalid/key/two-equals2.toml
  • tests/invalid/key/empty.toml
  • tests/invalid/key/no-eol.toml
  • tests/invalid/key/bare-invalid-character.toml
  • tests/invalid/key/two-equals3.toml
  • tests/invalid/key/partial-quoted.toml
  • tests/invalid/key/hash.toml
  • tests/invalid/key/duplicate.toml
  • tests/invalid/key/quoted-unclosed-2.toml
  • tests/invalid/key/single-open-bracket.toml
  • tests/invalid/key/start-bracket.toml
  • tests/invalid/key/special-character.toml
  • tests/invalid/key/without-value-4.toml
  • tests/invalid/bool/mixed-case.toml
  • tests/invalid/bool/just-f.toml
  • tests/invalid/bool/almost-false-with-extra.toml
  • tests/invalid/bool/almost-true-with-extra.toml
  • tests/invalid/bool/starting-same-false.toml
  • tests/invalid/bool/almost-false.toml
  • tests/invalid/bool/just-t.toml
  • tests/invalid/bool/almost-true.toml
  • tests/invalid/bool/wrong-case-true.toml
  • tests/invalid/bool/starting-same-true.toml
  • tests/invalid/bool/wrong-case-false.toml
  • tests/invalid/inline-table/add.toml
  • tests/invalid/inline-table/linebreak-3.toml
  • tests/invalid/inline-table/trailing-comma.toml
  • tests/invalid/inline-table/no-comma.toml
  • tests/invalid/inline-table/linebreak-1.toml
  • tests/invalid/inline-table/linebreak-4.toml
  • tests/invalid/inline-table/double-comma.toml
  • tests/invalid/inline-table/empty.toml
  • tests/invalid/inline-table/overwrite.toml
  • tests/invalid/inline-table/duplicate-key.toml
  • tests/invalid/inline-table/linebreak-2.toml
  • tests/invalid/encoding/bad-utf8-in-string.toml
  • tests/invalid/encoding/bom-not-at-start-1.toml
  • tests/invalid/encoding/utf16-bom.toml
  • tests/invalid/encoding/utf16.toml
  • tests/invalid/encoding/bad-utf8-at-end.toml
  • tests/invalid/encoding/bad-utf8-in-comment.toml
  • tests/invalid/encoding/bom-not-at-start-2.toml
  • tests/invalid/float/double-point-1.toml
  • tests/invalid/float/trailing-point.toml
  • tests/invalid/float/nan-incomplete-3.toml
  • tests/invalid/float/leading-point-plus.toml
  • tests/invalid/float/exp-double-us.toml
  • tests/invalid/float/leading-zero-plus.toml
  • tests/invalid/float/trailing-point-min.toml
  • tests/invalid/float/inf-incomplete-2.toml
  • tests/invalid/float/exp-trailing-us.toml
  • tests/invalid/float/inf_underscore.toml
  • tests/invalid/float/exp-leading-us.toml
  • tests/invalid/float/exp-double-e-1.toml
  • tests/invalid/float/nan-incomplete-1.toml
  • tests/invalid/float/exp-point-1.toml
  • tests/invalid/float/leading-point.toml
  • tests/invalid/float/leading-zero.toml
  • tests/invalid/float/trailing-point-plus.toml
  • tests/invalid/float/trailing-us-exp.toml
  • tests/invalid/float/leading-point-neg.toml
  • tests/invalid/float/exp-double-e-2.toml
  • tests/invalid/float/leading-us.toml
  • tests/invalid/float/leading-zero-neg.toml
  • tests/invalid/float/nan-incomplete-2.toml
  • tests/invalid/float/float.multi
  • tests/invalid/float/us-after-point.toml
  • tests/invalid/float/us-before-point.toml
  • tests/invalid/float/inf-incomplete-1.toml
  • tests/invalid/float/double-point-2.toml
  • tests/invalid/float/nan_underscore.toml
  • tests/invalid/float/trailing-us.toml
  • tests/invalid/float/exp-point-2.toml
  • tests/invalid/float/inf-incomplete-3.toml
  • tests/invalid/integer/trailing-us-oct.toml
  • tests/invalid/integer/invalid-oct.toml
  • tests/invalid/integer/negative-hex.toml
  • tests/invalid/integer/capital-oct.toml
  • tests/invalid/integer/double-sign-nex.toml
  • tests/invalid/integer/leading-us-bin.toml
  • tests/invalid/integer/leading-zero-2.toml
  • tests/invalid/integer/invalid-hex.toml
  • tests/invalid/integer/trailing-us-hex.toml
  • tests/invalid/integer/us-after-oct.toml
  • tests/invalid/integer/negative-bin.toml
  • tests/invalid/integer/positive-hex.toml
  • tests/invalid/integer/invalid-bin.toml
  • tests/invalid/integer/incomplete-bin.toml
  • tests/invalid/integer/positive-bin.toml
  • tests/invalid/integer/leading-us-hex.toml
  • tests/invalid/integer/us-after-hex.toml
  • tests/invalid/integer/leading-zero-3.toml
  • tests/invalid/integer/leading-zero-sign-3.toml
  • tests/invalid/integer/capital-hex.toml
  • tests/invalid/integer/leading-us-oct.toml
  • tests/invalid/integer/leading-us.toml
  • tests/invalid/integer/text-after-integer.toml
  • tests/invalid/integer/capital-bin.toml
  • tests/invalid/integer/double-sign-plus.toml
  • tests/invalid/integer/trailing-us-bin.toml
  • tests/invalid/integer/leading-zero-1.toml
  • tests/invalid/integer/incomplete-oct.toml
  • tests/invalid/integer/negative-oct.toml
  • tests/invalid/integer/leading-zero-sign-2.toml
  • tests/invalid/integer/incomplete-hex.toml
  • tests/invalid/integer/double-us.toml
  • tests/invalid/integer/trailing-us.toml
  • tests/invalid/integer/integer.multi
  • tests/invalid/integer/leading-zero-sign-1.toml
  • tests/invalid/integer/us-after-bin.toml
  • tests/invalid/integer/positive-oct.toml
  • tests/invalid/control/bare-vertical-tab.toml
  • tests/invalid/control/rawmulti-lf.toml
  • tests/invalid/control/rawstring-lf.toml
  • tests/invalid/control/multi-del.toml
  • tests/invalid/control/bare-cr.toml
  • tests/invalid/control/multi-lf.toml
  • tests/invalid/control/bare-formfeed.toml
  • tests/invalid/control/string-lf.toml
  • tests/invalid/control/multi-us.toml
  • tests/invalid/control/string-us.toml
  • tests/invalid/control/string-del.toml
  • tests/invalid/control/comment-del.toml
  • tests/invalid/control/comment-us.toml
  • tests/invalid/control/rawstring-del.toml
  • tests/invalid/control/rawmulti-us.toml
  • tests/invalid/control/rawstring-us.toml
  • tests/invalid/control/string-bs.toml
  • tests/invalid/control/bare-null.toml
  • tests/invalid/control/multi-null.toml
  • tests/invalid/control/string-null.toml
  • tests/invalid/control/rawmulti-null.toml
  • tests/invalid/control/rawstring-null.toml
  • tests/invalid/control/control.multi
  • tests/invalid/control/comment-null.toml
  • tests/invalid/control/comment-lf.toml
  • tests/invalid/control/rawmulti-del.toml
  • tests/invalid/control/comment-cr.toml
  • tests/invalid/datetime/no-secs.toml
  • tests/invalid/datetime/time-no-leads-2.toml
  • tests/invalid/datetime/second-over.toml
  • tests/invalid/datetime/month-under.toml
  • tests/invalid/datetime/no-leads.toml
  • tests/invalid/datetime/time-no-leads.toml
  • tests/invalid/datetime/minute-over.toml
  • tests/invalid/datetime/no-leads-with-milli.toml
  • tests/invalid/datetime/month-over.toml
  • tests/invalid/datetime/trailing-t.toml
  • tests/invalid/datetime/no-t.toml
  • tests/invalid/datetime/mday-over.toml
  • tests/invalid/datetime/hour-over.toml
  • tests/invalid/datetime/mday-under.toml
  • tests/invalid/array/missing-separator.toml
  • tests/invalid/array/no-close.toml
  • tests/invalid/array/no-close-table.toml
  • tests/invalid/array/extending-table.toml
  • tests/invalid/array/no-close-table-2.toml
  • tests/invalid/array/tables-1.toml
  • tests/invalid/array/double-comma-2.toml
  • tests/invalid/array/no-close-2.toml
  • tests/invalid/array/text-before-array-separator.toml
  • tests/invalid/array/text-in-array.toml
  • tests/invalid/array/tables-2.toml
  • tests/invalid/array/text-after-array-entries.toml
  • tests/invalid/array/double-comma-1.toml
  • tests/invalid/string/basic-multiline-unknown-escape.toml
  • tests/invalid/string/bad-codepoint.toml
  • tests/invalid/string/basic-out-of-range-unicode-escape-2.toml
  • tests/invalid/string/multiline-no-close.toml
  • tests/invalid/string/bad-multiline.toml
  • tests/invalid/string/basic-multiline-quotes.toml
  • tests/invalid/string/wrong-close.toml
  • tests/invalid/string/no-close.toml
  • tests/invalid/string/multiline-escape-space.toml
  • tests/invalid/string/bad-concat.toml
  • tests/invalid/string/text-after-string.toml
  • tests/invalid/string/bad-byte-escape.toml
  • tests/invalid/string/missing-quotes.toml
  • tests/invalid/string/literal-multiline-quotes-1.toml
  • tests/invalid/string/multiline-bad-escape-3.toml
  • tests/invalid/string/multiline-no-close-2.toml
  • tests/invalid/string/multiline-quotes-1.toml
  • tests/invalid/string/bad-uni-esc-5.toml
  • tests/invalid/string/multiline-bad-escape-2.toml
  • tests/invalid/string/basic-unknown-escape.toml
  • tests/invalid/string/bad-slash-escape.toml
  • tests/invalid/string/bad-escape-2.toml
  • tests/invalid/string/bad-uni-esc-1.toml
  • tests/invalid/string/basic-out-of-range-unicode-escape-1.toml
  • tests/invalid/string/bad-uni-esc-3.toml
  • tests/invalid/string/multiline-bad-escape-1.toml
  • tests/invalid/string/bad-uni-esc-2.toml
  • tests/invalid/string/basic-multiline-out-of-range-unicode-escape-2.toml
  • tests/invalid/string/literal-multiline-quotes-2.toml
  • tests/invalid/string/basic-multiline-out-of-range-unicode-escape-1.toml
  • tests/invalid/string/bad-uni-esc-4.toml
  • tests/invalid/string/basic-byte-escapes.toml
  • tests/invalid/string/bad-escape-1.toml
  • tests/.gitattributes
  • tests/valid/newline-crlf.toml
  • tests/valid/table/without-super.json
  • tests/valid/table/array-table-array.json
  • tests/valid/table/array-nest.json
  • tests/valid/table/array-table-array.toml
  • tests/valid/table/whitespace.json
  • tests/valid/table/whitespace.toml
  • tests/valid/table/empty.json
  • tests/valid/table/with-single-quotes.toml
  • tests/valid/table/array-many.toml
  • tests/valid/table/sub-empty.toml
  • tests/valid/table/keyword.toml
  • tests/valid/table/sub-empty.json
  • tests/valid/table/with-pound.toml
  • tests/valid/table/array-one.json
  • tests/valid/table/names.json
  • tests/valid/table/with-pound.json
  • tests/valid/table/array-many.json
  • tests/valid/table/without-super.toml
  • tests/valid/table/empty.toml
  • tests/valid/table/no-eol.toml
  • tests/valid/table/array-implicit.toml
  • tests/valid/table/array-one.toml
  • tests/valid/table/names.toml
  • tests/valid/table/with-literal-string.json
  • tests/valid/table/array-implicit.json
  • tests/valid/table/with-single-quotes.json
  • tests/valid/table/array-nest.toml
  • tests/valid/table/with-literal-string.toml
  • tests/valid/table/no-eol.json
  • tests/valid/table/keyword.json
  • tests/valid/key/special-word.json
  • tests/valid/key/special-chars.json
  • tests/valid/key/quoted-dots.json
  • tests/valid/key/case-sensitive.json
  • tests/valid/key/case-sensitive.toml
  • tests/valid/key/dotted.toml
  • tests/valid/key/empty.json
  • tests/valid/key/equals-nospace.toml
  • tests/valid/key/dotted.json
  • tests/valid/key/space.toml
  • tests/valid/key/numeric.json
  • tests/valid/key/special-word.toml
  • tests/valid/key/alphanum.json
  • tests/valid/key/numeric-dotted.toml
  • tests/valid/key/quoted-dots.toml
  • tests/valid/key/empty.toml
  • tests/valid/key/escapes.json
  • tests/valid/key/equals-nospace.json
  • tests/valid/key/special-chars.toml
  • tests/valid/key/space.json
  • tests/valid/key/escapes.toml
  • tests/valid/key/numeric.toml
  • tests/valid/key/numeric-dotted.json
  • tests/valid/key/alphanum.toml
  • tests/valid/newline-crlf.json
  • tests/valid/implicit-and-explicit-after.json
  • tests/valid/example.toml
  • tests/valid/implicit-and-explicit-before.json
  • tests/valid/implicit-and-explicit-after.toml
  • tests/valid/newline-lf.toml
  • tests/valid/spec-example-1.toml
  • tests/valid/bool/bool.toml
  • tests/valid/bool/bool.json
  • tests/valid/inline-table/multiline.toml
  • tests/valid/inline-table/multiline.json
  • tests/valid/inline-table/nest.toml
  • tests/valid/inline-table/empty.json
  • tests/valid/inline-table/key-dotted.json
  • tests/valid/inline-table/nest.json
  • tests/valid/inline-table/bool.toml
  • tests/valid/inline-table/bool.json
  • tests/valid/inline-table/empty.toml
  • tests/valid/inline-table/end-in-bool.toml
  • tests/valid/inline-table/inline-table.json
  • tests/valid/inline-table/array.toml
  • tests/valid/inline-table/inline-table.toml
  • tests/valid/inline-table/key-dotted.toml
  • tests/valid/inline-table/end-in-bool.json
  • tests/valid/inline-table/array.json
  • tests/valid/empty-file.toml
  • tests/valid/empty-file.json
  • tests/valid/implicit-groups.json
  • tests/valid/float/inf-and-nan.toml
  • tests/valid/float/zero.json
  • tests/valid/float/exponent.toml
  • tests/valid/float/float.toml
  • tests/valid/float/float.json
  • tests/valid/float/exponent.json
  • tests/valid/float/zero.toml
  • tests/valid/float/long.toml
  • tests/valid/float/underscore.toml
  • tests/valid/float/long.json
  • tests/valid/float/underscore.json
  • tests/valid/float/inf-and-nan.json
  • tests/valid/integer/literals.json
  • tests/valid/integer/zero.json
  • tests/valid/integer/integer.json
  • tests/valid/integer/zero.toml
  • tests/valid/integer/long.toml
  • tests/valid/integer/integer.toml
  • tests/valid/integer/underscore.toml
  • tests/valid/integer/literals.toml
  • tests/valid/integer/long.json
  • tests/valid/integer/underscore.json
  • tests/valid/implicit-groups.toml
  • tests/valid/newline-lf.json
  • tests/valid/comment/at-eof2.toml
  • tests/valid/comment/tricky.json
  • tests/valid/comment/at-eof.json
  • tests/valid/comment/at-eof.toml
  • tests/valid/comment/everywhere.json
  • tests/valid/comment/noeol.json
  • tests/valid/comment/tricky.toml
  • tests/valid/comment/at-eof2.json
  • tests/valid/comment/noeol.toml
  • tests/valid/comment/everywhere.toml
  • tests/valid/implicit-and-explicit-before.toml
  • tests/valid/example.json
  • tests/valid/spec-example-1-compact.toml
  • tests/valid/datetime/datetime.json
  • tests/valid/datetime/timezone.toml
  • tests/valid/datetime/milliseconds.json
  • tests/valid/datetime/local.toml
  • tests/valid/datetime/local-time.json
  • tests/valid/datetime/local-time.toml
  • tests/valid/datetime/local-date.toml
  • tests/valid/datetime/datetime.toml
  • tests/valid/datetime/local-date.json
  • tests/valid/datetime/local.json
  • tests/valid/datetime/timezone.json
  • tests/valid/datetime/milliseconds.toml
  • tests/valid/spec-example-1.json
  • tests/valid/spec-example-1-compact.json
  • tests/valid/array/mixed-string-table.json
  • tests/valid/array/mixed-int-string.toml
  • tests/valid/array/table-array-string-backslash.json
  • tests/valid/array/hetergeneous.json
  • tests/valid/array/nested-double.toml
  • tests/valid/array/string-quote-comma.json
  • tests/valid/array/strings.json
  • tests/valid/array/hetergeneous.toml
  • tests/valid/array/mixed-string-table.toml
  • tests/valid/array/nested-double.json
  • tests/valid/array/empty.json
  • tests/valid/array/nospaces.json
  • tests/valid/array/string-with-comma.json
  • tests/valid/array/bool.toml
  • tests/valid/array/mixed-int-array.toml
  • tests/valid/array/nested-inline-table.toml
  • tests/valid/array/string-quote-comma-2.json
  • tests/valid/array/nospaces.toml
  • tests/valid/array/bool.json
  • tests/valid/array/empty.toml
  • tests/valid/array/nested-inline-table.json
  • tests/valid/array/array.toml
  • tests/valid/array/nested.toml
  • tests/valid/array/strings.toml
  • tests/valid/array/mixed-int-float.toml
  • tests/valid/array/string-quote-comma.toml
  • tests/valid/array/mixed-int-float.json
  • tests/valid/array/string-quote-comma-2.toml
  • tests/valid/array/mixed-int-string.json
  • tests/valid/array/table-array-string-backslash.toml
  • tests/valid/array/mixed-int-array.json
  • tests/valid/array/string-with-comma.toml
  • tests/valid/array/nested.json
  • tests/valid/array/array.json
  • tests/valid/string/double-quote-escape.json
  • tests/valid/string/multiline.toml
  • tests/valid/string/multiline.json
  • tests/valid/string/nl.toml
  • tests/valid/string/escape-esc.json
  • tests/valid/string/raw.json
  • tests/valid/string/multiline-escaped-crlf.toml
  • tests/valid/string/multiline-escaped-crlf.json
  • tests/valid/string/empty.json
  • tests/valid/string/raw-multiline.toml
  • tests/valid/string/raw-multiline.json
  • tests/valid/string/escaped-escape.json
  • tests/valid/string/multiline-quotes.toml
  • tests/valid/string/unicode-escape.json
  • tests/valid/string/unicode-literal.json
  • tests/valid/string/with-pound.toml
  • tests/valid/string/multiline-quotes.json
  • tests/valid/string/with-pound.json
  • tests/valid/string/simple.json
  • tests/valid/string/empty.toml
  • tests/valid/string/escapes.json
  • tests/valid/string/escape-esc.toml
  • tests/valid/string/escape-tricky.json
  • tests/valid/string/double-quote-escape.toml
  • tests/valid/string/escaped-escape.toml
  • tests/valid/string/escapes.toml
  • tests/valid/string/nl.json
  • tests/valid/string/escape-tricky.toml
  • tests/valid/string/unicode-escape.toml
  • tests/valid/string/raw.toml
  • tests/valid/string/unicode-literal.toml
  • tests/valid/string/simple.toml
  • tests/fuzzing/id:000000,sig:06,src:000035,time:345,execs:551,op:havoc,rep:2
  • tests/fuzzing/id:000000,sig:06,src:000052+000007,time:701543,execs:28399,op:splice,rep:2
  • tests/fuzzing/id:000000,sig:06,src:000024,time:10060,execs:1850,op:havoc,rep:4
  • tests/COPYING
  • toml.dict
  • src/fuzz.zig
  • src/toml2json.zig
  • src/main.zig
  • src/parser.zig
  • src/print_failing_tests.zig
  • src/integration_tests.zig
  • src/lexer.zig
  • README.md
  • flake.nix
  • LICENCE
  • .gitignore

History

Published On Tree @ Commit Size
v0.32 Sat, 28 Sep 2024 15:53:32 UTC Tree 223.728 KB
v0.31 Wed, 19 Jun 2024 17:20:50 UTC Tree 221.673 KB
v0.30 Tue, 31 Oct 2023 18:51:34 UTC Tree 219.775 KB
v0.29 Mon, 04 Sep 2023 09:58:38 UTC Tree 219.250 KB
v0.28 Wed, 23 Aug 2023 21:34:56 UTC Tree 181.004 KB
v0.27 Sun, 30 Jul 2023 11:57:28 UTC Tree 185.102 KB
v0.26 Sun, 09 Jul 2023 17:30:13 UTC Tree 185.102 KB
v0.25 Sat, 24 Jun 2023 11:34:44 UTC Tree 185.138 KB
v0.24 Sat, 24 Jun 2023 11:28:44 UTC Tree 185.136 KB
v0.23 Tue, 20 Jun 2023 18:10:56 UTC Tree 184.894 KB
v0.22 Mon, 24 Apr 2023 21:58:02 UTC Tree 184.891 KB
v0.21 Fri, 21 Apr 2023 21:01:34 UTC Tree 184.895 KB
v0.20 Sun, 08 Jan 2023 12:24:37 UTC Tree 183.792 KB
v0.19 Thu, 22 Dec 2022 14:11:04 UTC Tree 183.357 KB
v0.18 Thu, 22 Dec 2022 13:00:33 UTC Tree 183.335 KB
v0.17 Thu, 22 Dec 2022 11:19:56 UTC Tree 181.865 KB
v0.16 Sun, 27 Nov 2022 18:56:58 UTC Tree 182.203 KB
v0.15 Sun, 27 Nov 2022 17:19:59 UTC Tree 181.316 KB
v0.14 Thu, 24 Nov 2022 20:03:21 UTC Tree 181.315 KB
v0.13 Thu, 24 Nov 2022 20:01:32 UTC Tree 181.315 KB
v0.12 Thu, 24 Nov 2022 19:35:05 UTC Tree 180.156 KB
v0.11 Thu, 24 Nov 2022 19:27:33 UTC Tree 179.889 KB
v0.10 Mon, 21 Nov 2022 20:42:58 UTC Tree 177.556 KB
v0.9 Mon, 21 Nov 2022 20:19:10 UTC Tree 176.745 KB
v0.8 Sun, 20 Nov 2022 23:17:39 UTC Tree 174.276 KB
v0.7 Sun, 20 Nov 2022 23:16:32 UTC Tree 174.278 KB
v0.6 Sun, 20 Nov 2022 21:50:24 UTC Tree 173.939 KB
v0.5 Thu, 17 Nov 2022 21:35:30 UTC Tree 172.458 KB
v0.4 Thu, 17 Nov 2022 21:28:14 UTC Tree 172.448 KB
v0.3 Thu, 17 Nov 2022 21:26:06 UTC Tree 172.033 KB
v0.2 Thu, 17 Nov 2022 20:52:33 UTC Tree 169.804 KB
v0.1 Thu, 17 Nov 2022 20:45:32 UTC Tree 167.594 KB