Documentation ¶
Index ¶
- func EnsureURL(uri lsp.DocumentURI, pathType string) (url lsp.DocumentURI, err error)
- func ExtractBuildLabel(str string) string
- func ExtractLiteral(str string) string
- func GetLineContent(ctx context.Context, uri lsp.DocumentURI, position lsp.Position) ([]string, error)
- func GetPathFromURL(uri lsp.DocumentURI, pathType string) (documentPath string, err error)
- func IsURL(uri lsp.DocumentURI) bool
- func JoinLines(text []string, hasEnds bool) string
- func LooksLikeAttribute(str string) bool
- func LooksLikeCONFIGAttr(str string) bool
- func LooksLikeDictAttr(str string) bool
- func LooksLikeString(str string) bool
- func LooksLikeStringAttr(str string) bool
- func NewHandler() jsonrpc2.Handler
- func PackageLabelFromURI(uri lsp.DocumentURI) (string, error)
- func ReadFile(ctx context.Context, uri lsp.DocumentURI) ([]string, error)
- func SplitLines(content string, keepEnds bool) []string
- func TrimQuotes(str string) string
- type Analyzer
- func (a *Analyzer) AspStatementFromContent(content string) []*asp.Statement
- func (a *Analyzer) AspStatementFromFile(uri lsp.DocumentURI) ([]*asp.Statement, error)
- func (a *Analyzer) BuildDefFromLabel(ctx context.Context, label *core.BuildLabel, path string) (*BuildDef, error)
- func (a *Analyzer) BuildDefsFromURI(ctx context.Context, uri lsp.DocumentURI) (map[string]*BuildDef, error)
- func (a *Analyzer) BuildFileURIFromPackage(packageDir string) lsp.DocumentURI
- func (a *Analyzer) BuildLabelFromContent(ctx context.Context, content string, uri lsp.DocumentURI, pos lsp.Position) *BuildLabel
- func (a *Analyzer) BuildLabelFromString(ctx context.Context, currentURI lsp.DocumentURI, labelStr string) (*BuildLabel, error)
- func (a *Analyzer) CallFromAST(val interface{}, pos lsp.Position) *Call
- func (a *Analyzer) CallFromStatementAndPos(content string, pos lsp.Position) *Call
- func (a *Analyzer) IdentsFromContent(content string, pos lsp.Position) chan *Identifier
- func (a *Analyzer) IsBuildFile(uri lsp.DocumentURI) bool
- func (a *Analyzer) VariablesFromContent(content string, pos lsp.Position) map[string]Variable
- type Argument
- type BuildDef
- type BuildLabel
- type Call
- type Identifier
- type LsHandler
- type RuleDef
- type Variable
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 ¶
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 ¶
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 ¶
JoinLines concatenate a slice of string, removes the trailing "\n" if hadEnds is true
func LooksLikeAttribute ¶
LooksLikeAttribute returns true if the input string looks like an attribute: "hello".
func LooksLikeCONFIGAttr ¶
LooksLikeCONFIGAttr returns true if the input string looks like an attribute of CONFIG object: CONFIG.PLZ_VERSION
func LooksLikeDictAttr ¶
LooksLikeDictAttr returns true if the input string looks like an attribute of dict e.g. {"foo": 1, "bar": "baz"}.keys()
func LooksLikeString ¶
LooksLikeString returns true if the input string looks like a string
func LooksLikeStringAttr ¶
LooksLikeStringAttr returns true if the input string looks like an attribute of string: "hello".format()
func NewHandler ¶
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 ¶
ReadFile takes a DocumentURI and reads the file into a slice of string
func SplitLines ¶
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
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 ¶
AspStatementFromContent returns a slice of asp.Statement given content string(usually workSpaceStore.doc.TextInEdit)
func (*Analyzer) AspStatementFromFile ¶
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 ¶
CallFromAST returns the Call object from the AST if it's within the range of the position
func (*Analyzer) CallFromStatementAndPos ¶
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
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 ¶
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
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