diff --git a/README.md b/README.md index e69de29..fe9bc8b 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,47 @@ +# asciigoat's INI parser + +[![Go Reference][godoc-badge]][godoc] +[![Go Report Card][goreport-badge]][goreport] + +`asciigoat.org/ini` is a simple Go library that very loosly parses +[`INI`-style][wikipedia-dosini] documents allowing the implementation +of stricter parsers of similar form. + +**asciigoat** is [MIT](https://opensource.org/license/mit/) licensed. + +[godoc]: https://pkg.go.dev/asciigoat.org/ini +[godoc-badge]: https://pkg.go.dev/badge/asciigoat.org/ini.svg +[goreport]: https://goreportcard.com/report/asciigoat.org/ini +[goreport-badge]: https://goreportcard.com/badge/asciigoat.org/ini + +[godoc-lexer]: https://pkg.go.dev/asciigoat.org/core/lexer +[godoc-parser-parser]: https://pkg.go.dev/asciigoat.org/ini/parser#Parser + +[wikipedia-dosini]: https://en.wikipedia.org/wiki/INI_file + +## Parser + +[`parser.Parser`][godoc-parser-parser] uses +[`asciigoat`'s lexer][godoc-lexer] to process an `INI`-style document +emiting tokens and errors via callbacks. + +## 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][godoc] attempts to solve. + +* [gcfg](https://pkg.go.dev/gopkg.in/gcfg.v1) +* [unknwon's go-ini](https://github.com/go-ini/ini) +* [wlevene's GoINI](https://github.com/wlevene/ini) + +## See also + +* [asciigoat.org/core](https://asciigoat.org/core) +* [oss.jpi.io](https://oss.jpi.io) +* [INI file][wikipedia-dosini] (_wikipedia_) +* [TOML](https://www.kelche.co/blog/go/toml/)