asciigoat's INI parser https://asciigoat.org/ini
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Alejandro Mery 71ab4a58c1 build-sys: use local darvaza.org/core [DO-NOT-MERGE] 1 year ago
.vscode vscode: add Subname to the dictionary 1 year ago
basic basic: rename and document queue related methods 1 year ago
parser parser: use GetPositionalLength() on TextParser.Discard() and TextParser.Emit() 1 year ago
tools tools: add stringer support 1 year ago
.editorconfig
.gitignore
LICENCE.txt
Makefile build-sys: import build system from darvaza.org/core 1 year ago
README.md basic: introduce basic one-shot INI-style decoder 1 year ago
docs.go
go.mod build-sys: use local darvaza.org/core [DO-NOT-MERGE] 1 year ago
go.sum build-sys: use local asciigoat.org/core [DO-NOT-MERGE] 1 year ago

README.md

asciigoat's INI parser

Go Reference Go Report Card

asciigoat.org/ini is a simple Go library that very loosly parses INI-style documents allowing the implementation of stricter parsers of similar form.

asciigoat is MIT licensed.

Parser

parser.Parser uses asciigoat's lexer to process an INI-style document emiting tokens and errors via callbacks.

Basic Parser

basic.Decode() provies a one-shot decoder that returns a structured document for you to post-process.

To allow for correct handling of repetition of section and field names downstream, it uses arrays instead of maps, and makes almost no judgment about what section or field names are acceptable.

Other Implementations

Other implementations exist, and they are mature and feature-rich, but they are highly opinionated about what's a valid file. Built around maps they don't allow repeating names and constraint what characters can be used.

These are great when you can adapt, or already agree, to their conditions but that's not always the case when you are parsing configuration files from other applications and that's what asciigoat.org/ini attempts to solve.

See also