diff options
Diffstat (limited to 'internal/ini')
| -rw-r--r-- | internal/ini/ini.go | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/internal/ini/ini.go b/internal/ini/ini.go deleted file mode 100644 index c546a52..0000000 --- a/internal/ini/ini.go +++ /dev/null @@ -1,51 +0,0 @@ -package ini - -import ( - "bufio" - "errors" - "io" - "iter" - "strings" -) - -type Parser struct { - Section string - LineNumber int -} - -type KeyVal struct { - Key, Val string -} - -func (p *Parser) Parse(r io.Reader) iter.Seq2[KeyVal, error] { - return func(yield func(KeyVal, error) bool) { - *p = Parser{} - scanner := bufio.NewScanner(r) - for scanner.Scan() { - p.LineNumber++ - line := strings.TrimSpace(scanner.Text()) - if len(line) == 0 || strings.HasPrefix(line, "//") || strings.HasPrefix(line, ";") || strings.HasPrefix(line, "#") { - continue - } - if strings.HasPrefix(line, "[") && strings.HasSuffix(line, "]") { - p.Section = strings.TrimSpace(line[1 : len(line)-1]) - continue - } - key, val, ok := strings.Cut(line, "=") - if !ok { - if !yield(KeyVal{}, errors.New("invalid key-value pair")) { - return - } - continue - } - key, val = strings.TrimSpace(key), strings.TrimSpace(val) - if !yield(KeyVal{key, val}, nil) { - return - } - } - if err := scanner.Err(); err != nil { - yield(KeyVal{}, err) - return - } - } -} |
