langserver

package
v13.2.5+incompatible Latest Latest
Warning

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

Go to latest
Published: Nov 15, 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 ExtractLiteral

func ExtractLiteral(str string) string

ExtractLiteral extra a literal expression such as function name, variable name from a content line

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) AspStatementFromContent

func (a *Analyzer) AspStatementFromContent(content string) []*asp.Statement

AspStatementFromContent returns a slice of asp.Statement given content string(usually workSpaceStore.doc.TextInEdit)

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) BuildLabelFromContent

func (a *Analyzer) BuildLabelFromContent(ctx context.Context,
	content string, uri lsp.DocumentURI, pos lsp.Position) *BuildLabel

BuildLabelFromContent returns the BuildLabel object from the AST if it's within the range of the position

func (*Analyzer) BuildLabelFromString

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

BuildLabelFromString returns a BuildLabel object,

func (*Analyzer) CallFromAST

func (a *Analyzer) CallFromAST(val interface{}, pos lsp.Position) *Call

CallFromAST returns the Call object from the AST if it's within the range of the position

func (*Analyzer) CallFromStatementAndPos

func (a *Analyzer) CallFromStatementAndPos(content string, pos lsp.Position) *Call

CallFromStatementAndPos returns a Identifier object represents function call, Only returns the not nil object when the Identifier is within the range specified by the position

func (*Analyzer) IdentsFromContent

func (a *Analyzer) IdentsFromContent(content string, pos lsp.Position) chan *Identifier

IdentsFromContent returns a channel of Identifier 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) VariablesFromContent

func (a *Analyzer) VariablesFromContent(content string, pos lsp.Position) map[string]Variable

VariablesFromContent returns a map of variable name to Variable

type Argument

type Argument struct {
	*asp.Argument
	// the definition string when hover over the argument, e.g. src type:list, required:false
	Definition string
	// string representation of the original argument definition
	Repr     string
	Required bool
}

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
	// The content of the build definition
	Content    string
	Visibility []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 definition of the buildlabel, e.g: BUILD Label: //src/core
	Definition string
}

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

type Call

type Call struct {
	Arguments []asp.CallArgument
	Name      string
}

Call represent a function call

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 Variable

type Variable struct {
	Name string
	Type string
}

Variable is a representation of a variable assignment in ***More fields can be added in later if needed

Jump to

Keyboard shortcuts

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