func Errorf(n d2ast.Node, f string, v ...interface{}) error
func Parse(path string, r io.Reader, opts *ParseOptions) (*d2ast.Map, error)
Parse parses a .d2 Map in r.
The returned Map always represents a valid .d2 file. All encountered errors will be in []error.
The map may be compiled via Compile even if there are errors to keep language tooling operational. Though autoformat should not run.
If UTF16Pos is true, positions will be recorded in UTF-16 codeunits as required by LSP and browser clients. See https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocuments TODO: update godocs
func ParseKey(key string) (*d2ast.KeyPath, error)
func ParseMapKey(mapKey string) (*d2ast.Key, error)
func ParseValue(value string) (d2ast.Value, error)
TODO: rename to Error and make existing Error a private type errorWithRange
type ParseError struct { // Errors from globs need to be deduplicated ErrorsLookup map[d2ast.Error]struct{} `json:"-"` Errors []d2ast.Error `json:"errs"` }
func (pe *ParseError) Empty() bool
func (pe *ParseError) Error() string
type ParseOptions struct { // UTF16Pos would be used with input received from a browser where the browser will send the text as UTF-8 but // JavaScript keeps strings in memory as UTF-16 and so needs UTF-16 indexes into the text to line up errors correctly. // So you want to read UTF-8 still but adjust the indexes to pretend the input is utf16. UTF16Pos bool ParseError *ParseError }