v0.0.0-...-ec1a81b Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Jul 22, 2024 License: BSD-3-Clause Imports: 21 Imported by: 0



Package template contains code for dealing with templates



This section is empty.


View Source
var (
	Left  = []byte("{{")
	Right = []byte("}}")


func Definition

func Definition(snapshot *cache.Snapshot, fh file.Handle, loc protocol.Position) ([]protocol.Location, error)

Definition finds the definitions of the symbol at loc. It does not understand scoping (if any) in templates. This code is for definitions, type definitions, and implementations. Results only for variables and templates.

func Diagnostics

func Diagnostics(snapshot *cache.Snapshot) map[protocol.DocumentURI][]*cache.Diagnostic

Diagnostics returns parse errors. There is only one per file. The errors are not always helpful. For instance { {end}} will likely point to the end of the file.

func DocumentSymbols

func DocumentSymbols(snapshot *cache.Snapshot, fh file.Handle) ([]protocol.DocumentSymbol, error)

DocumentSymbols returns a hierarchy of the symbols defined in a template file. (The hierarchy is flat. SymbolInformation might be better.)

func Highlight

func Highlight(ctx context.Context, snapshot *cache.Snapshot, fh file.Handle, loc protocol.Position) ([]protocol.DocumentHighlight, error)

func Hover

func Hover(ctx context.Context, snapshot *cache.Snapshot, fh file.Handle, position protocol.Position) (*protocol.Hover, error)

func References

func References(ctx context.Context, snapshot *cache.Snapshot, fh file.Handle, params *protocol.ReferenceParams) ([]protocol.Location, error)

func SemanticTokens

func SemanticTokens(ctx context.Context, snapshot *cache.Snapshot, spn protocol.DocumentURI) (*protocol.SemanticTokens, error)


type All

type All struct {
	// contains filtered or unexported fields

All contains the Parse of all the template files

func New

func New(tmpls map[protocol.DocumentURI]file.Handle) *All

New returns the Parses of the snapshot's tmpl files (maybe cache these, but then avoiding import cycles needs code rearrangements)

type Parsed

type Parsed struct {
	ParseErr error
	// contains filtered or unexported fields

func (*Parsed) FindLiteralBefore

func (p *Parsed) FindLiteralBefore(pos int) (int, int)

FindLiteralBefore locates the first preceding string literal returning its position and length in buf or returns -1 if there is none. Assume double-quoted string rather than backquoted string for now.

func (*Parsed) FromPosition

func (p *Parsed) FromPosition(x protocol.Position) int

FromPosition translates a protocol.Position into an offset into the template

func (*Parsed) LineCol

func (p *Parsed) LineCol(x int) (uint32, uint32)

LineCol converts from a 0-based byte offset to 0-based line, col. col in runes

func (*Parsed) Position

func (p *Parsed) Position(pos int) protocol.Position

Position produces a protocol.Position from an offset in the template

func (*Parsed) Range

func (p *Parsed) Range(x, length int) protocol.Range

func (*Parsed) RuneCount

func (p *Parsed) RuneCount(l, s, e uint32) uint32

RuneCount counts runes in line l, from col s to e (e==0 for end of line. called only for multiline tokens)

func (*Parsed) SymsAtPos

func (p *Parsed) SymsAtPos(pos int) []symbol

func (*Parsed) TokenSize

func (p *Parsed) TokenSize(t Token) (int, error)

func (*Parsed) Tokens

func (p *Parsed) Tokens() []Token

func (*Parsed) WriteNode

func (p *Parsed) WriteNode(w io.Writer, n parse.Node)

WriteNode is for debugging

type Token

type Token struct {
	Start, End int // offset from start of template
	Multiline  bool

Token is a single {{...}}. More precisely, Left...Right

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL