Files
wowdoc-scraper/function.go

65 lines
1.1 KiB
Go

package main
import (
_ "embed"
"fmt"
"os"
"path/filepath"
"text/template"
)
var fns = template.FuncMap{
"plus1": func(x int) int {
return x + 1
},
}
//go:embed function.tmpl
var templatestr string
var functionTemplate *template.Template
func init() {
var err error
functionTemplate, err = template.New("class").Funcs(fns).Parse(templatestr)
if err != nil {
Error.Printf("Error parsing template: %v", err)
return
}
}
type (
Function struct {
Name string
Description string
Arguments []Parameter
Returns []Parameter
}
Parameter struct {
Name string
Type string
Description string
}
)
func (f *Function) ResolveFileName() string {
return f.Name + ".lua"
}
func (f *Function) WriteFile(root string) error {
if f.Name == "" {
return fmt.Errorf("function name is empty of %+v", f)
}
file, err := os.Create(filepath.Join(root, f.ResolveFileName()))
if err != nil {
return err
}
defer file.Close()
err = functionTemplate.Execute(file, f)
if err != nil {
return err
}
return nil
}