tinyini

package module
v0.6.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2023 License: Apache-2.0 Imports: 6 Imported by: 2

README

tinyini

tinyini is a minimalistic library for parsing INI-like configuration files.

Tests Documentation

example configuration file

globalkey = globalvalue

[section]
key = first-value
key = second-value
empty=
anotherkey = "  has whitespace   "

[änöther-section] ; this is a comment and ignored
key = different value

Documentation

Overview

package tinyini provides an extremely bare-bones library for parsing INI-like configuration files. For details, see the documentation for function Parse.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ForEacher added in v0.6.0

type ForEacher func(section, name, value string) bool

ForEacher is the callback function type for iterating over values.

type IniError

type IniError struct {
	Lineno int
	// contains filtered or unexported fields
}

IniError describes a parsing error and provides its line number.

func (*IniError) Error

func (i *IniError) Error() string

func (*IniError) Unwrap

func (i *IniError) Unwrap() error

type Pair added in v0.4.0

type Pair struct {
	Value  string
	Lineno int
}

type Section

type Section map[string][]Pair

Section contains all configuration key-values of a single bracketed section ("[example-section]"). All key-values may contain multiple values. The values are given in the order of occurrence.

type Sections added in v0.6.0

type Sections map[string]Section

Sections is a convenience type over map[string]Sections.

func Parse

func Parse(r io.Reader) (result Sections, errs []error)

Parse will produce a map of Section from an io.Reader. The caller should note that Parse returns a slice of errors in the order of occurrence, so the condition for success is len(errs) == 0.

Parse will parse as much as possible even when encountering errors, so result may contain something useful even if len(errs) > 0.

The global section is given with the empty section name "". Otherwise the section names will be whatever valid UTF-8 is found between the brackets '[' and ']'.

Parse ignores whitespace around section headers, keys, and non-quoted values. If the value should contain whitespace in its beginning or end, enclose the whole value in quotes (" value with whitespaces ").

Quotes may be contained in quoted values by escaping them with the backslash like \". Escaped quotes will be unquoted when parsing, but all other seemingly "escaped" values like \n are ignored and left verbatim.

All keys may contain multiple values. Their additional values are appended to their respective section in the order of appearance.

func (Sections) ForEach added in v0.6.0

func (s Sections) ForEach(callback ForEacher)

ForEach is a convenience function for simple iteration over Sections. The passed callback is called with parsed values in the order of appearance. If the callback returns false, iteration is stopped. If a section-specific variable has been defined multiple times, each value will be passed on to the callback with separate invocations.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL