package conf
go get code.uint32.ru/tiny/conf to download.
import "code.uint32.ru/tiny/conf" to use in your code. conf implements a very simple config parser with permissive input syntax.
It parses input file or io.Reader looking for key value pairs separated by equal sign into conf.Map which is a map[string]conf.Value under the hood.
Input syntax rules are as follows:
-
Lines starting with "#" are considered to be comments and are discarded. If a line starts with any number of whitespace characters followed by "#" it is also discarded as comment.
-
If a line is not a comment it must follow the "key = value" pattern. Any of the following is valid: "key=value", "key= value", "key =value". Leading and trailing whitespace characters are trimmed before parsing line. Whitespaces surrounding key and value strings are also trimmed.
-
Keys in the input must be unique, ohterwise Read / ReadFile methods will return an error.
Map object has Find, Get and GetDefault methods used to retrieve Value from Map by corresponding key.
Value is essentially a string which can be converted into several types using Value's methods:
String() returns Value as string
StringSlice() interprets Value as a comma-separated list (whitespace around elements is trimmed)
Int() converts Value to int
IntSlice() tries to convert Value to []int
Float64() converts Value to float64
Float64Slice() tries to convert to []float64
Map() tries to interpret Value as comma-separated list of key-value pairs like in "key1: value1, key2: value2, key3: value3"
URL() calls url.Parse to convert Value to *url.URL
See documentation for description of all available methods.
Example usage:
m, _ := conf.ReadFile("myfile")
retries, err := m.Get("retries").Int()
if err != nil {
// handle err
}
addr, err := m.Get("addr").URL()
if err != nil {
// handle err
}
See example folder.