-
Notifications
You must be signed in to change notification settings - Fork 0
/
action.go
71 lines (61 loc) · 2.03 KB
/
action.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package main
import (
"fmt"
"strings"
)
type Action struct {
ResourceOptions
}
func (a *Action) GetDir() string {
return "actions"
}
func (a *Action) GetFileName() string {
return a.ResourceOptions.Domain + "-actions.js"
}
func (a *Action) GetFileContent() string {
domainFirstCharUpper := strings.ToUpper(a.Domain[:1]) + a.Domain[1:]
return fmt.Sprintf(a.getTemplate(), domainFirstCharUpper, a.Domain, a.Action, a.Constant)
}
func (a *Action) getTemplate() string {
content := a.getHeaderTemplate()
content = content + a.getBodyTemplateVariation()
content = content + a.getFooterTemplate()
return content
}
func (a *Action) getHeaderTemplate() string {
return "var AppDispatcher = require('../dispatcher/app-dispatcher');\n" +
"var %[1]sConstants = require('../constants/%[2]s-constants');\n"
}
func (a *Action) getBodyTemplateVariation() string {
if a.IsApi {
return "" +
"var %[1]sApi = require('../webapi/%[2]s-api');\n\n" +
"var %[1]sActions = {\n" +
" %[3]s: function() {\n" +
" AppDispatcher.dispatch({\n" +
" actionType: %[1]sConstants.%[4]s,\n" +
" });\n\n" +
" %[1]sApi.%[3]s(%[1]sActions.%[3]sSuccess);\n" +
" },\n\n" +
" %[3]sSuccess: function(%[2]ss) {\n" +
" AppDispatcher.dispatch({\n" +
" actionType: %[1]sConstants.%[4]s_SUCCESS,\n" +
" %[2]ss: %[2]ss\n" +
" });\n" +
" }\n"
} else {
return "\n" +
"var %[1]sActions = {\n" +
" %[3]s: function(%[2]s) {\n" +
" AppDispatcher.dispatch({\n" +
" actionType: %[1]sConstants.%[4]s,\n" +
" %[2]s: %[2]s\n" +
" });\n" +
" }\n"
}
}
func (a *Action) getFooterTemplate() string {
return "" +
"};\n\n" +
"module.exports = %[1]sActions;"
}