308 lines
8.1 KiB
Go
308 lines
8.1 KiB
Go
package main
|
|
|
|
var keywords = []string{"break", "default", "func", "select", "chan", "else", "const", "fallthrough", "type", "continue", "var", "goto", "defer", "go", "range"}
|
|
|
|
var identifiers = []string{"bool", "byte", "complex64", "complex128", "error", "float32", "float64", "int", "int8", "int16", "int32", "int64", "rune", "string", "uint", "uint8", "uint16", "uint32", "uint64", "uintptr", "true", "false", "iota", "nil", "err"}
|
|
|
|
var groups = []struct {
|
|
name string // name of the function / method
|
|
comment string // comment appended to name
|
|
variadic bool // is the parameter variadic?
|
|
opening string // opening token
|
|
closing string // closing token
|
|
separator string // separator token
|
|
multi bool // items are always on multiple lines
|
|
parameters []string // parameter names
|
|
preventFunc bool // prevent the fooFunc function/method
|
|
}{
|
|
{
|
|
name: "Parens",
|
|
comment: "renders a single item in parenthesis. Use for type conversion or to specify evaluation order.",
|
|
variadic: false,
|
|
opening: "(",
|
|
closing: ")",
|
|
separator: "",
|
|
parameters: []string{"item"},
|
|
},
|
|
{
|
|
name: "List",
|
|
comment: "renders a comma separated list. Use for multiple return functions.",
|
|
variadic: true,
|
|
opening: "",
|
|
closing: "",
|
|
separator: ",",
|
|
parameters: []string{"items"},
|
|
},
|
|
{
|
|
name: "Values",
|
|
comment: "renders a comma separated list enclosed by curly braces. Use for slice or composite literals.",
|
|
variadic: true,
|
|
opening: "{",
|
|
closing: "}",
|
|
separator: ",",
|
|
parameters: []string{"values"},
|
|
},
|
|
{
|
|
name: "Index",
|
|
comment: "renders a colon separated list enclosed by square brackets. Use for array / slice indexes and definitions.",
|
|
variadic: true,
|
|
opening: "[",
|
|
closing: "]",
|
|
separator: ":",
|
|
parameters: []string{"items"},
|
|
},
|
|
{
|
|
name: "Block",
|
|
comment: "renders a statement list enclosed by curly braces. Use for code blocks. A special case applies when used directly after Case or Default, where the braces are omitted. This allows use in switch and select statements.",
|
|
variadic: true,
|
|
opening: "{",
|
|
closing: "}",
|
|
multi: true,
|
|
parameters: []string{"statements"},
|
|
},
|
|
{
|
|
name: "Defs",
|
|
comment: "renders a statement list enclosed in parenthesis. Use for definition lists.",
|
|
variadic: true,
|
|
opening: "(",
|
|
closing: ")",
|
|
multi: true,
|
|
parameters: []string{"definitions"},
|
|
},
|
|
{
|
|
name: "Call",
|
|
comment: "renders a comma separated list enclosed by parenthesis. Use for function calls.",
|
|
variadic: true,
|
|
opening: "(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"params"},
|
|
},
|
|
{
|
|
name: "Params",
|
|
comment: "renders a comma separated list enclosed by parenthesis. Use for function parameters and method receivers.",
|
|
variadic: true,
|
|
opening: "(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"params"},
|
|
},
|
|
{
|
|
name: "Assert",
|
|
comment: "renders a period followed by a single item enclosed by parenthesis. Use for type assertions.",
|
|
variadic: false,
|
|
opening: ".(",
|
|
closing: ")",
|
|
separator: "",
|
|
parameters: []string{"typ"},
|
|
},
|
|
{
|
|
name: "Map",
|
|
comment: "renders the keyword followed by a single item enclosed by square brackets. Use for map definitions.",
|
|
variadic: false,
|
|
opening: "map[",
|
|
closing: "]",
|
|
separator: "",
|
|
parameters: []string{"typ"},
|
|
},
|
|
{
|
|
name: "If",
|
|
comment: "renders the keyword followed by a semicolon separated list.",
|
|
variadic: true,
|
|
opening: "if ",
|
|
closing: "",
|
|
separator: ";",
|
|
parameters: []string{"conditions"},
|
|
},
|
|
{
|
|
name: "Return",
|
|
comment: "renders the keyword followed by a comma separated list.",
|
|
variadic: true,
|
|
opening: "return ",
|
|
closing: "",
|
|
separator: ",",
|
|
parameters: []string{"results"},
|
|
},
|
|
{
|
|
name: "For",
|
|
comment: "renders the keyword followed by a semicolon separated list.",
|
|
variadic: true,
|
|
opening: "for ",
|
|
closing: "",
|
|
separator: ";",
|
|
parameters: []string{"conditions"},
|
|
},
|
|
{
|
|
name: "Switch",
|
|
comment: "renders the keyword followed by a semicolon separated list.",
|
|
variadic: true,
|
|
opening: "switch ",
|
|
closing: "",
|
|
separator: ";",
|
|
parameters: []string{"conditions"},
|
|
},
|
|
{
|
|
name: "Interface",
|
|
comment: "renders the keyword followed by a method list enclosed by curly braces.",
|
|
variadic: true,
|
|
opening: "interface{",
|
|
closing: "}",
|
|
multi: true,
|
|
parameters: []string{"methods"},
|
|
},
|
|
{
|
|
name: "Struct",
|
|
comment: "renders the keyword followed by a field list enclosed by curly braces.",
|
|
variadic: true,
|
|
opening: "struct{",
|
|
closing: "}",
|
|
multi: true,
|
|
parameters: []string{"fields"},
|
|
},
|
|
{
|
|
name: "Case",
|
|
comment: "renders the keyword followed by a comma separated list.",
|
|
variadic: true,
|
|
opening: "case ",
|
|
closing: ":",
|
|
separator: ",",
|
|
parameters: []string{"cases"},
|
|
},
|
|
{
|
|
name: "Append",
|
|
comment: "renders the append built-in function.",
|
|
variadic: true,
|
|
opening: "append(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"args"},
|
|
},
|
|
{
|
|
name: "Cap",
|
|
comment: "renders the cap built-in function.",
|
|
variadic: false,
|
|
opening: "cap(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"v"},
|
|
},
|
|
{
|
|
name: "Close",
|
|
comment: "renders the close built-in function.",
|
|
variadic: false,
|
|
opening: "close(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"c"},
|
|
},
|
|
{
|
|
name: "Complex",
|
|
comment: "renders the complex built-in function.",
|
|
variadic: false,
|
|
opening: "complex(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"r", "i"},
|
|
},
|
|
{
|
|
name: "Copy",
|
|
comment: "renders the copy built-in function.",
|
|
variadic: false,
|
|
opening: "copy(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"dst", "src"},
|
|
},
|
|
{
|
|
name: "Delete",
|
|
comment: "renders the delete built-in function.",
|
|
variadic: false,
|
|
opening: "delete(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"m", "key"},
|
|
},
|
|
{
|
|
name: "Imag",
|
|
comment: "renders the imag built-in function.",
|
|
variadic: false,
|
|
opening: "imag(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"c"},
|
|
},
|
|
{
|
|
name: "Len",
|
|
comment: "renders the len built-in function.",
|
|
variadic: false,
|
|
opening: "len(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"v"},
|
|
},
|
|
{
|
|
name: "Make",
|
|
comment: "renders the make built-in function. The final parameter of the make function is optional, so it is represented by a variadic parameter list.",
|
|
variadic: true,
|
|
opening: "make(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"args"},
|
|
preventFunc: true, // the underlying function is not variadic, so we prevent the MakeFunc variation
|
|
},
|
|
{
|
|
name: "New",
|
|
comment: "renders the new built-in function.",
|
|
variadic: false,
|
|
opening: "new(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"typ"},
|
|
},
|
|
{
|
|
name: "Panic",
|
|
comment: "renders the panic built-in function.",
|
|
variadic: false,
|
|
opening: "panic(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"v"},
|
|
},
|
|
{
|
|
name: "Print",
|
|
comment: "renders the print built-in function.",
|
|
variadic: true,
|
|
opening: "print(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"args"},
|
|
},
|
|
{
|
|
name: "Println",
|
|
comment: "renders the println built-in function.",
|
|
variadic: true,
|
|
opening: "println(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"args"},
|
|
},
|
|
{
|
|
name: "Real",
|
|
comment: "renders the real built-in function.",
|
|
variadic: false,
|
|
opening: "real(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{"c"},
|
|
},
|
|
{
|
|
name: "Recover",
|
|
comment: "renders the recover built-in function.",
|
|
variadic: false,
|
|
opening: "recover(",
|
|
closing: ")",
|
|
separator: ",",
|
|
parameters: []string{},
|
|
},
|
|
}
|