gopkg.in/pelletier/go-toml.v0 (go): Package toml is a TOML markup language parser.  This version supports the specification as described in https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md  TOML data may be parsed in two ways: by file, or by string.  Either way, the result is a TomlTree object that can be used to navigate the structure and data within the original document.  After parsing TOML data with Load() or LoadFile(), use the Has() and Get() methods on the returned TomlTree, to find your way through the document data.  Go-toml has support for basic dot-separated key paths on the Has(), Get(), Set() and GetDefault() methods.  These are the same kind of key paths used within the TOML specification for struct tames.  TOML allows keys to contain '.', which can cause this syntax to be problematic for some documents.  In such cases, use the GetPath(), HasPath(), and SetPath(), methods to explicitly define the path.  This form is also faster, since it avoids having to parse the passed key for '.' delimiters.  Note that this is distinct from the heavyweight query syntax supported by TomlTree.Query() and the Query() struct (see below).  Each element within the TomlTree is stored with position metadata, which is invaluable for providing semantic feedback to a user.  This helps in situations where the TOML file parses correctly, but contains data that is not correct for the application.  In such cases, an error message can be generated that indicates the problem line and column number in the source TOML document.  The TOML query path implementation is based loosely on the JSONPath specification: http://goessner.net/articles/JsonPath/  The idea behind a query path is to allow quick access to any element, or set of elements within TOML document, with a single expression.  This is roughly equivalent to:  err is nil if any parsing exception occurs.  If no node in the tree matches the query, result will simply contain an empty list of items.  As illustrated above, the query path is much more efficient, especially since the structure of the TOML file can vary.  Rather than making assumptions about a document's structure, a query allows the programmer to make structured requests into the document, and get zero or more values as a result.  The syntax of a query begins with a root token, followed by any number sub-expressions:  Index expressions perform no bounds checking, and will contribute no values to the result set if the provided index or index range is invalid. Negative indexes represent values from the end of the array, counting backwards.  Slice expressions are supported, by using ':' to separate a start/end index pair.  Slice expressions also allow negative indexes for the start and stop arguments.  Slice expressions may have an optional stride/step parameter:  Slice start and end parameters are also optional:  Query filters are used within a Union [,] or single Filter [] expression. A filter only allows nodes that qualify through to the next expression, and/or into the result set.  There are several filters provided with the library:  An executed query returns a QueryResult object.  This contains the nodes in the TOML tree that qualify the query expression.  Position information is also available for each value in the set.  Queries may be executed directly on a TomlTree object, or compiled ahead of time and executed discretely.  The former is more convienent, but has the penalty of having to recompile the query expression each time.  Filter expressions may also be user defined by using the SetFilter() function on the Query object.  The function must return true/false, which signifies if the passed node is kept or discarded, respectively.
Keywords: go|golang|hacktoberfest|toml|toml-parsing