...

Package d2parser

import "oss.terrastruct.com/d2/d2parser"
Overview
Index

Overview ▾

func Errorf

func Errorf(n d2ast.Node, f string, v ...interface{}) error

func Parse

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

func ParseKey(key string) (*d2ast.KeyPath, error)

func ParseMapKey

func ParseMapKey(mapKey string) (*d2ast.Key, error)

func ParseValue

func ParseValue(value string) (d2ast.Value, error)

type ParseError

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 (*ParseError) Empty

func (pe *ParseError) Empty() bool

func (*ParseError) Error

func (pe *ParseError) Error() string

type ParseOptions

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
}