langserver

package
v13.2.2+incompatible Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2018 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EnsureURL

func EnsureURL(uri lsp.DocumentURI, pathType string) (url lsp.DocumentURI, err error)

EnsureURL ensures that the documentURI is a valid path in the filesystem and a valid 'file://' URI

func ExtractBuildLabel

func ExtractBuildLabel(str string) string

ExtractBuildLabel extracts build label from a string. Beginning of the buildlabel must have a quote end of the string must not be anything other than quotes or characters

func GetLineContent

func GetLineContent(ctx context.Context, uri lsp.DocumentURI, position lsp.Position) ([]string, error)

GetLineContent returns a []string contraining a single string value respective to position.Line

func GetPathFromURL

func GetPathFromURL(uri lsp.DocumentURI, pathType string) (documentPath string, err error)

GetPathFromURL returns the absolute path of the file which documenURI relates to it also checks if the file path is valid

func IsURL

func IsURL(uri lsp.DocumentURI) bool

IsURL checks if the documentUri passed has 'file://' prefix

func JoinLines

func JoinLines(text []string, hasEnds bool) string

JoinLines concatenate a slice of string, removes the trailing "\n" if hadEnds is true

func LooksLikeAttribute

func LooksLikeAttribute(str string) bool

LooksLikeAttribute returns true if the input string looks like an attribute: "hello".

func LooksLikeCONFIGAttr

func LooksLikeCONFIGAttr(str string) bool

LooksLikeCONFIGAttr returns true if the input string looks like an attribute of CONFIG object: CONFIG.PLZ_VERSION

func LooksLikeDictAttr

func LooksLikeDictAttr(str string) bool

LooksLikeDictAttr returns true if the input string looks like an attribute of dict e.g. {"foo": 1, "bar": "baz"}.keys()

func LooksLikeString

func LooksLikeString(str string) bool

LooksLikeString returns true if the input string looks like a string

func LooksLikeStringAttr

func LooksLikeStringAttr(str string) bool

LooksLikeStringAttr returns true if the input string looks like an attribute of string: "hello".format()

func NewHandler

func NewHandler() jsonrpc2.Handler

NewHandler creates a BUILD file language server handler

func PackageLabelFromURI

func PackageLabelFromURI(uri lsp.DocumentURI) (string, error)

PackageLabelFromURI returns a build label of a package

func ReadFile

func ReadFile(ctx context.Context, uri lsp.DocumentURI) ([]string, error)

ReadFile takes a DocumentURI and reads the file into a slice of string

func SplitLines

func SplitLines(content string, keepEnds bool) []string

SplitLines splits a content with \n characters, and returns a slice of string if keepEnds is true, all lines will keep it's original splited character

func TrimQuotes

func TrimQuotes(str string) string

TrimQuotes is used to trim the qouted string This is usually used to trim the quoted string in BUILD files, such as a BuildLabel this will also work for string with any extra characters outside of qoutes like so: "//src/core",

Types

type Analyzer

type Analyzer struct {
	State *core.BuildState

	BuiltIns   map[string]*RuleDef
	Attributes map[string][]*RuleDef
	// contains filtered or unexported fields
}

Analyzer is a wrapper around asp.parser This is being loaded into a handler on initialization

func (*Analyzer) AspStatementFromFile

func (a *Analyzer) AspStatementFromFile(uri lsp.DocumentURI) ([]*asp.Statement, error)

AspStatementFromFile gets all the Asp.Statement from a given BUILD file *reads complete files only*

func (*Analyzer) BuildDefFromLabel

func (a *Analyzer) BuildDefFromLabel(ctx context.Context, label *core.BuildLabel, path string) (*BuildDef, error)

BuildDefFromLabel returns a BuildDef struct given an *core.BuildLabel and the path of the label

func (*Analyzer) BuildDefsFromURI

func (a *Analyzer) BuildDefsFromURI(ctx context.Context, uri lsp.DocumentURI) (map[string]*BuildDef, error)

BuildDefsFromURI returns a map of buildDefname : *BuildDef

func (*Analyzer) BuildFileURIFromPackage

func (a *Analyzer) BuildFileURIFromPackage(packageDir string) lsp.DocumentURI

BuildFileURIFromPackage takes a relative(to the reporoot) package directory, and returns a build file path

func (*Analyzer) BuildLabelFromString

func (a *Analyzer) BuildLabelFromString(ctx context.Context,
	currentURI lsp.DocumentURI, labelStr string) (*BuildLabel, error)

BuildLabelFromString returns a BuildLabel object,

func (*Analyzer) IsBuildFile

func (a *Analyzer) IsBuildFile(uri lsp.DocumentURI) bool

IsBuildFile takes a uri path and check if it's a valid build file

func (*Analyzer) StatementFromPos

func (a *Analyzer) StatementFromPos(uri lsp.DocumentURI, position lsp.Position) (*Statement, error)

StatementFromPos returns a Statement struct with either an Identifier or asp.Expression

type Argument

type Argument struct {
	*asp.Argument
	// contains filtered or unexported fields
}

Argument is a wrapper around asp.Argument, this is used to store the argument information for specific rules, and it also tells you if the argument is required

type BuildDef

type BuildDef struct {
	*Identifier
	BuildDefName string
	Visibility   []string
	// The content of the build definition
	Content string
}

BuildDef is the definition for a build target. often a function call using a specific build rule

type BuildLabel

type BuildLabel struct {
	*core.BuildLabel
	// Path of the build file
	Path string
	// IdentStatement for the build definition,
	// usually the call to the specific buildrule, such as "go_library()"
	BuildDef *BuildDef
	// The content of the build definition
	Definition string
}

BuildLabel is a wrapper around core.BuildLabel Including the path of the buildFile

type Identifier

type Identifier struct {
	*asp.IdentStatement
	Type   string
	Pos    lsp.Position
	EndPos lsp.Position
}

Identifier is a wrapper around asp.Identifier Including the starting line and the ending line number

type LsHandler

type LsHandler struct {
	IsServerDown bool
	// contains filtered or unexported fields
}

LsHandler is the main handler struct of the language server handler

func (*LsHandler) Handle

func (h *LsHandler) Handle(ctx context.Context, conn *jsonrpc2.Conn, req *jsonrpc2.Request) (result interface{}, err error)

Handle function takes care of all the incoming from the client, and returns the correct response

type RuleDef

type RuleDef struct {
	*asp.FuncDef
	Header string
	ArgMap map[string]*Argument

	// This applies when the FuncDef is a attribute of an object
	Object string
}

RuleDef is a wrapper around asp.FuncDef, it also includes a Header(function definition) And Argument map stores the name and the information of the arguments this rule has

type Statement

type Statement struct {
	Ident      *Identifier
	Expression *asp.Expression
}

Statement is a simplified version of asp.Statement Here we only care about Idents and Expressions

Jump to

Keyboard shortcuts

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