-
Notifications
You must be signed in to change notification settings - Fork 0
/
templates.go
25 lines (20 loc) · 1.5 KB
/
templates.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package imocker
import "text/template"
var templateHelpers = template.FuncMap{
"isLastElement": func(i int, len int) bool {
return i+1 == len
},
}
const mockTemplate = `
package {{$.Package}}
type Mock{{$.Name}} struct {
{{range $methodName, $method := .Methods}}
Test{{$methodName}} func({{range $paramIndex, $param := $method.NamedParams}}{{$param.Name}} {{$param.Type}}{{if not (isLastElement $paramIndex (len $method.NamedParams))}},{{end}}{{end}}) ({{if .UnNamedReturns}}{{range $retIndex, $ret := $method.UnNamedReturns}}{{$ret}}{{if not (isLastElement $retIndex (len $method.UnNamedReturns))}},{{end}}{{end}}{{else}}{{range $retIndex, $ret := .NamedReturns}}{{$ret.Name}} {{$ret.Type}}{{end}}{{end}})
{{end}}
}
{{range $methodName, $method := .Methods}}
func (m *Mock{{$.Name}}) {{$methodName}}({{range $paramIndex, $param := $method.NamedParams}}{{$param.Name}} {{$param.Type}}{{if not (isLastElement $paramIndex (len $method.NamedParams))}}, {{end}}{{end}}) ({{if .UnNamedReturns}}{{range $retIndex, $ret := $method.UnNamedReturns}}{{$ret}}{{if not (isLastElement $retIndex (len $method.UnNamedReturns))}},{{end}}{{end}}{{else}}{{range $retIndex, $ret := .NamedReturns}}{{$ret.Name}} {{$ret.Type}}{{if not (isLastElement $retIndex (len $method.NamedReturns))}},{{end}}{{end}}{{end}}) {
{{if $method.HasReturns}}return{{end}} m.Test{{$methodName}}({{range $paramIndex, $param := $method.NamedParams}}{{$param.Name}}{{if not (isLastElement $paramIndex (len $method.NamedParams))}}, {{end}}{{end}})
}
{{end}}
`