diff options
| author | Shulhan <ms@kilabit.info> | 2026-01-08 14:16:27 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2026-01-08 14:16:27 +0700 |
| commit | 0fde383e8f30a0d7504e7987f6a3ebe6a082d69a (patch) | |
| tree | f2e01fd4ebe26db08899a6ffc969ad4cbbf3970a /lib/ini/reader.go | |
| parent | e91954b5a65847970903e0d8294e54d918c8bc0b (diff) | |
| download | pakakeh.go-0fde383e8f30a0d7504e7987f6a3ebe6a082d69a.tar.xz | |
lib/ini: improve error message when parsing variable name
Display the invalid character in the error message with quote, so space
can detected.
Also, export the error variable so external caller can detect it using the
variable.
Diffstat (limited to 'lib/ini/reader.go')
| -rw-r--r-- | lib/ini/reader.go | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/ini/reader.go b/lib/ini/reader.go index 39ed6d6e..642aeee2 100644 --- a/lib/ini/reader.go +++ b/lib/ini/reader.go @@ -1,6 +1,5 @@ -// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info> -// // SPDX-License-Identifier: BSD-3-Clause +// SPDX-FileCopyrightText: 2018 M. Shulhan <ms@kilabit.info> package ini @@ -30,11 +29,14 @@ const ( tokUnderscore = '_' ) +// ErrVarNameChar define an error when variable name is using invalid +// character. +var ErrVarNameChar = errors.New(`invalid character in variable name`) + var ( - errBadConfig = errors.New("bad config line %d at %s") - errVarNoSection = "variable without section, line %d at %s" - errVarNameInvalid = errors.New("invalid variable name, line %d at %s") - errValueInvalid = errors.New("invalid value, line %d at %s") + errBadConfig = errors.New("bad config line %d at %s") + errVarNoSection = "variable without section, line %d at %s" + errValueInvalid = errors.New("invalid value, line %d at %s") ) // reader define the INI file reader. @@ -333,11 +335,11 @@ func (reader *reader) parseVariable() (err error) { reader.r, _, err = reader.br.ReadRune() if err != nil { - return errVarNameInvalid + return fmt.Errorf(`error when parsing variable name: %w`, err) } if !unicode.IsLetter(reader.r) { - return errVarNameInvalid + return fmt.Errorf(`%w %q`, ErrVarNameChar, reader.r) } var isNewline bool @@ -384,7 +386,7 @@ func (reader *reader) parseVariable() (err error) { return reader.parsePossibleValue() default: - return errVarNameInvalid + return fmt.Errorf(`%w %q`, ErrVarNameChar, reader.r) } } @@ -421,7 +423,7 @@ func (reader *reader) parsePossibleValue() (err error) { reader.bufFormat.WriteByte(reader.b) return reader.parseVarValue() default: - return errVarNameInvalid + return fmt.Errorf(`%w %q`, ErrVarNameChar, reader.b) } } |
