func()

in parse/parse.go [249:301]


func (p *flagParser) parseObj() (interface{}, error) {
	p.input = p.input[1:]

	O := map[string]interface{}{}

loop:
	for {
		p.ignoreWhitespace()
		if p.input[0] == '}' {
			p.input = p.input[1:]
			break
		}

		k, err := p.parseKey()
		if err != nil {
			return nil, err
		}

		p.ignoreWhitespace()
		if err := p.expectChar(':'); err != nil {
			return nil, err
		}

		v, err := p.parseValue(objValueStopSet)
		if err != nil {
			return nil, err
		}

		if p.input == "" {
			return nil, errors.New("dictionary expected ',' or '}'")
		}

		O[k] = v
		next := p.input[0]
		p.input = p.input[1:]

		switch next {
		case '}':
			break loop
		case ',':
			continue
		default:
			return nil, errors.New("dictionary expected ',' or '}'")
		}
	}

	// empty object
	if len(O) == 0 {
		return nil, nil
	}

	return O, nil
}