parser

package
v1.2.6 Latest Latest
Warning

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

Go to latest
Published: Oct 13, 2020 License: Apache-2.0 Imports: 9 Imported by: 0

README

ini parser

This is a parser for parse INI format content to golang data

parser is ref the project: https://github.com/dombenson/go-ini, Thank you very much

Ref

License

MIT

Documentation

Overview

Package parser is a Parser for parse INI format content to golang data

There are example data:

# comments
name = inhere
age = 28
debug = true
hasQuota1 = 'this is val'
hasQuota2 = "this is val1"
shell = ${SHELL}
noEnv = ${NotExist|defValue}

; array in def section
tags[] = a
tags[] = b
tags[] = c

; comments
[sec1]
key = val0
some = value
stuff = things
; array in section
types[] = x
types[] = y

how to use, please see examples:

Index

Constants

View Source
const (
	ModeFull   parseMode = 1
	ModeSimple parseMode = 2
)

mode of parse data ModeFull - will parse array ModeSimple - don't parse array value

View Source
const DefSection = "__default"

DefSection default section key name

Variables

View Source
var TagName = "ini"

TagName default tag-name of mapping data to struct

Functions

func Decode

func Decode(blob []byte, ptr interface{}) error

Decode INI content to golang data

func Encode

func Encode(v interface{}, defSection ...string) (out []byte, err error)

Encode golang data to INI

func EncodeFull

func EncodeFull(data map[string]interface{}, defSection ...string) (out []byte, err error)

EncodeFull full mode data to INI

func EncodeSimple

func EncodeSimple(data map[string]map[string]string, defSection ...string) (out []byte, err error)

EncodeSimple data to INI

func IgnoreCase

func IgnoreCase(p *Parser)

IgnoreCase set ignore-case

func NoDefSection

func NoDefSection(p *Parser)

NoDefSection set don't return DefSection title Usage:

Parser.NewWithOptions(ini.ParseEnv)

Types

type Parser

type Parser struct {

	// TagName of mapping data to struct
	TagName string
	// Ignore case for key name
	IgnoreCase bool
	// default section name. default is "__default"
	DefSection string
	// only for full parse mode
	NoDefSection bool
	// you can custom data collector
	Collector UserCollector
	// contains filtered or unexported fields
}

Parser definition

func NewFulled

func NewFulled(opts ...func(*Parser)) *Parser

NewFulled create a full mode Parser with some options

func NewSimpled

func NewSimpled(opts ...func(*Parser)) *Parser

NewSimpled create a simple mode Parser

func Parse

func Parse(data string, mode parseMode, opts ...func(*Parser)) (p *Parser, err error)

Parse a INI data string to golang

func (*Parser) FullData

func (p *Parser) FullData() map[string]interface{}

FullData get parsed data by full parse

func (*Parser) MapStruct added in v1.2.0

func (p *Parser) MapStruct(ptr interface{}) (err error)

MapStruct mapping the parsed data to struct ptr

func (*Parser) ParseBytes

func (p *Parser) ParseBytes(bts []byte) (err error)

ParseBytes parse from bytes data

func (*Parser) ParseFrom

func (p *Parser) ParseFrom(in *bufio.Scanner) (int64, error)

ParseFrom a data scanner

func (*Parser) ParseMode

func (p *Parser) ParseMode() uint8

ParseMode get current mode

func (*Parser) ParseString

func (p *Parser) ParseString(str string) error

ParseString parse from string data

func (*Parser) ParsedData

func (p *Parser) ParsedData() interface{}

ParsedData get parsed data

func (*Parser) Reset

func (p *Parser) Reset()

Reset parser, clear parsed data

func (*Parser) SimpleData

func (p *Parser) SimpleData() map[string]map[string]string

SimpleData get parsed data by simple parse

func (*Parser) WithOptions

func (p *Parser) WithOptions(opts ...func(*Parser)) *Parser

WithOptions apply some options

type UserCollector

type UserCollector func(section, key, val string, isSlice bool)

UserCollector custom data collector. Notice: in simple mode, isSlice always is false.

Jump to

Keyboard shortcuts

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