Documentation ¶
Overview ¶
Package snippets implements support for building snippets for vscode
Index ¶
- Variables
- func JSON(w io.Writer, v interface{}) error
- func XML(w io.Writer, v interface{}) error
- type Generator
- type IntelliJ
- func (i IntelliJ) AddTemplate(target *IntelliJTemplateGroup, template IntelliJTemplate)
- func (i IntelliJ) Generate(w io.Writer, filesystem embed.FS) error
- func (i IntelliJ) NewTemplate(name string, template string, opts ...IntelliJOption) *IntelliJTemplate
- func (i IntelliJ) WithDescription(description string) IntelliJOption
- func (i IntelliJ) WithValue(value string) IntelliJOption
- func (i IntelliJ) WithVariables(vars []string) IntelliJOption
- type IntelliJOption
- type IntelliJTemplate
- type IntelliJTemplateGroup
- type VSCode
- func (v VSCode) AddItem(target *map[string]*VSCodeSnippet, snippet *VSCodeSnippet)
- func (v VSCode) Generate(w io.Writer, filesystem embed.FS) error
- func (v VSCode) NewItem(name string, template string, opts ...VSCodeOption) *VSCodeSnippet
- func (v VSCode) NewSnippetMap() map[string]*VSCodeSnippet
- func (v VSCode) WithBody(body []string) VSCodeOption
- func (v VSCode) WithDescription(description string) VSCodeOption
- func (v VSCode) WithPrefix(prefix string) VSCodeOption
- type VSCodeOption
- type VSCodeSnippet
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var EXTENSION_PACKAGE_FILE []byte
Functions ¶
Types ¶
type IntelliJ ¶
type IntelliJ struct{}
func (IntelliJ) AddTemplate ¶
func (i IntelliJ) AddTemplate(target *IntelliJTemplateGroup, template IntelliJTemplate)
AddTemplate adds a Tempate to the target TemplateSet struct
func (IntelliJ) Generate ¶
Generate generates an XML file which contains an IntelliJ live template group built from the fusion templates
Generate supports rendering output to an io.Writer.
func (IntelliJ) NewTemplate ¶
func (i IntelliJ) NewTemplate(name string, template string, opts ...IntelliJOption) *IntelliJTemplate
NewTemplate creates a new live template Template, the building block for IntelliJ live templates.
All Template bodies are generated from parsing the provided Go template.
func (IntelliJ) WithDescription ¶
func (i IntelliJ) WithDescription(description string) IntelliJOption
WithDescription applies a description to a Template.
func (IntelliJ) WithValue ¶
func (i IntelliJ) WithValue(value string) IntelliJOption
WithValue applies the live template value lines to a Template.
func (IntelliJ) WithVariables ¶
func (i IntelliJ) WithVariables(vars []string) IntelliJOption
type IntelliJOption ¶
type IntelliJOption func(*IntelliJTemplate)
IntelliJOption is a modifying function that applies a property to an Template.
type IntelliJTemplate ¶
type IntelliJTemplate struct { // XMLName serves as the XML tag which this struct will populate XMLName xml.Name `xml:"template"` // Name serves as the abbreviation for a template in the IDE Name string `xml:"name,attr"` // Value is the template as a string, which is to be encoded to XML at a later time Value string `xml:"value,attr"` // Description is an optional description of the live template displayed by the IDE Description string `xml:"description,attr"` // Variable definitions are needed in order to allow their usage within templates // - see Variable struct Variables []templateVariable `xml:"variable"` ToReformat string `xml:"toReformat,attr"` ToShortenFQNames string `xml:"toShortenFQNames,attr"` // Context contains Options for a Template - see Context struct Context templateContext `xml:"context"` }
Templates contain information about the live template including information about any variables it uses, the base template itself, and other metadata
type IntelliJTemplateGroup ¶
type IntelliJTemplateGroup struct { XMLName xml.Name `xml:"templateSet"` Group string `xml:"group,attr"` Templates []IntelliJTemplate `xml:"template"` }
The IntelliJTemplateGroup contains all of the Templates that will be contained within the Template group
type VSCode ¶
type VSCode struct{}
func (VSCode) AddItem ¶
func (v VSCode) AddItem(target *map[string]*VSCodeSnippet, snippet *VSCodeSnippet)
AddItem adds an Item to the target Snippet map.
func (VSCode) Generate ¶
Generate generates a snippets file from all Go template files in the provided filesystem.
Generate supports rendering output to an io.Writer.
func (VSCode) NewItem ¶
func (v VSCode) NewItem(name string, template string, opts ...VSCodeOption) *VSCodeSnippet
NewItem creates a new snippet Item, the building block for VSCode snippets.
All Item bodies are generated from parsing the provided Go template.
Example ¶
package main import ( "github.com/slalombuild/fusion/snippets" "github.com/slalombuild/fusion/templates/aws" ) func main() { // Generate a new snippet item from an existing // Go template v := snippets.VSCode{} v.NewItem("IAM Policy", aws.TEMPLATE_AWS_IAM_POLICY) }
Output:
func (VSCode) NewSnippetMap ¶
func (v VSCode) NewSnippetMap() map[string]*VSCodeSnippet
NewSnippetMap creates a new VSCode snippet map.
SnippetMaps are used to build a vscode snippet file using a map of named Items.
Example ¶
package main import ( "log" "os" "github.com/slalombuild/fusion/snippets" "github.com/slalombuild/fusion/templates/aws" ) func main() { v := snippets.VSCode{} // Create a new snippet map sm := v.NewSnippetMap() // Build a list of snippets to add to the map s := []*snippets.VSCodeSnippet{ v.NewItem("IAM Policy", aws.TEMPLATE_AWS_IAM_POLICY), v.NewItem("Lambda function", aws.TEMPLATE_AWS_LAMBDA_FUNCTION), } // Append all the snippets for _, snippet := range s { v.AddItem(&sm, snippet) } // Render the snippet file as json err := snippets.JSON(os.Stdout, s) if err != nil { log.Fatal(err) } // OR write the snippet json to a file f, err := os.Create("fusion-snippets.json") if err != nil { log.Fatal(err) } // The JSON method can write to stdout,stderr, a file // or anything else that implements io.Writer err = snippets.JSON(f, s) if err != nil { log.Fatal(err) } }
Output:
func (VSCode) WithBody ¶
func (v VSCode) WithBody(body []string) VSCodeOption
WithBody applies the snippet body lines to an Item.
func (VSCode) WithDescription ¶
func (v VSCode) WithDescription(description string) VSCodeOption
WithDescription applies a description to an Item.
func (VSCode) WithPrefix ¶
func (v VSCode) WithPrefix(prefix string) VSCodeOption
WithPrefix applies an intellisense prefix to an Item.
type VSCodeOption ¶
type VSCodeOption func(*VSCodeSnippet)
VSCodeOption is a modifying function that applies a property to an Item.
type VSCodeSnippet ¶
type VSCodeSnippet struct { // Scope scopes the snippet so that only relevant snippets are suggested. Scope string `json:"scope,omitempty"` // Prefix defines one or more trigger words that // display the snippet in IntelliSense. Substring // matching is performed on prefixes. Prefix string `json:"prefix"` // Description is an optional description of the snippet // displayed by IntelliSense. Description string `json:"description"` // Body is one or more lines of content, which will be joined as multiple lines upon insertion. // Newlines and embedded tabs will be formatted according to the context in which the snippet is inserted. Body []string `json:"body"` // contains filtered or unexported fields }
Item is the content of a named VSCode snippet. Items are placed into maps of map[string]*VSCodeSnippet to create a full named VSCodeSnippet.