Replace the section component from entries in favor of parser state

This commit is contained in:
kayomn 2022-12-24 21:55:07 +00:00
parent d68ddf1164
commit 01e7b4f450
1 changed files with 12 additions and 9 deletions

21
ini.go
View File

@ -14,9 +14,8 @@ type Builder struct {
// Singular key-value pair under the given section within an INI file. // Singular key-value pair under the given section within an INI file.
type Entry struct { type Entry struct {
Section string Key string
Key string Value string
Value string
} }
// Returns the last error that occured during parsing. // Returns the last error that occured during parsing.
@ -87,9 +86,8 @@ func (parser *Parser) Parse() Entry {
if assignmentIndex := strings.Index(line, "="); assignmentIndex > -1 { if assignmentIndex := strings.Index(line, "="); assignmentIndex > -1 {
// Key with value. // Key with value.
return Entry{ return Entry{
Section: parser.section, Key: unquote(strings.TrimSpace(line[0:assignmentIndex])),
Key: unquote(strings.TrimSpace(line[0:assignmentIndex])), Value: unquote(strings.TrimSpace(line[assignmentIndex+1:])),
Value: unquote(strings.TrimSpace(line[assignmentIndex+1:])),
} }
} }
@ -97,9 +95,8 @@ func (parser *Parser) Parse() Entry {
var keyValue = unquote(line[1:lineTail]) var keyValue = unquote(line[1:lineTail])
return Entry{ return Entry{
Section: parser.section, Key: keyValue,
Key: keyValue, Value: keyValue,
Value: keyValue,
} }
} }
@ -117,6 +114,12 @@ type Parser struct {
isEnd bool isEnd bool
} }
// Returns the name of the section last parsed, which will an empty string if currently in the
// default section.
func (parser *Parser) Section() string {
return parser.section
}
// Appends a new section titled `name` in the `builder`. // Appends a new section titled `name` in the `builder`.
func (builder *Builder) Section(name string) error { func (builder *Builder) Section(name string) error {
var _, printError = fmt.Fprintf(builder.writer, "[%s]\n", name) var _, printError = fmt.Fprintf(builder.writer, "[%s]\n", name)