Assisted-by: GLM 5.3 Flash
This commit is contained in:
@@ -24,6 +24,7 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"slices"
|
||||
)
|
||||
|
||||
@@ -127,6 +128,31 @@ func ParseMapContext(ctx context.Context, data []byte) (map[string]any, error) {
|
||||
return tree, err
|
||||
}
|
||||
|
||||
// ParseFile reads the TOML document at path and parses it into a Document,
|
||||
// the shape Parse gives. Every error names the file it came from: a read
|
||||
// failure and a parse failure alike carry the path as their first words,
|
||||
// wrapped so errors.AsType still reaches the SyntaxError inside.
|
||||
func ParseFile(path string) (*Document, error) {
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%s: %w", path, err)
|
||||
}
|
||||
doc, err := Parse(data)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%s: %w", path, err)
|
||||
}
|
||||
return doc, nil
|
||||
}
|
||||
|
||||
// Valid reports whether data is a valid TOML document: nil when the parser
|
||||
// accepts it, and the parse error when it does not. It is the library call
|
||||
// the -validate mode of interpres-decode is built on, and it reads nothing
|
||||
// but the bytes it is given.
|
||||
func Valid(data []byte) error {
|
||||
_, err := ParseMapContext(context.Background(), data)
|
||||
return err
|
||||
}
|
||||
|
||||
// parseOptions bound the work one parse may do and the shape it produces. A
|
||||
// zero field takes the default.
|
||||
type parseOptions struct {
|
||||
|
||||
Reference in New Issue
Block a user