1package ini 2 3import ( 4 "io" 5 "os" 6) 7 8// OpenFile takes a path to a given file, and will open and parse 9// that file. 10func OpenFile(path string) (Sections, error) { 11 f, err := os.Open(path) 12 if err != nil { 13 return Sections{}, &UnableToReadFile{Err: err} 14 } 15 defer f.Close() 16 17 return Parse(f, path) 18} 19 20// Parse will parse the given file using the shared config 21// visitor. 22func Parse(f io.Reader, path string) (Sections, error) { 23 tree, err := ParseAST(f) 24 if err != nil { 25 return Sections{}, err 26 } 27 28 v := NewDefaultVisitor(path) 29 if err = Walk(tree, v); err != nil { 30 return Sections{}, err 31 } 32 33 return v.Sections, nil 34} 35 36// ParseBytes will parse the given bytes and return the parsed sections. 37func ParseBytes(b []byte) (Sections, error) { 38 tree, err := ParseASTBytes(b) 39 if err != nil { 40 return Sections{}, err 41 } 42 43 v := NewDefaultVisitor("") 44 if err = Walk(tree, v); err != nil { 45 return Sections{}, err 46 } 47 48 return v.Sections, nil 49} 50