命令/ProjectCmd:项目定义指令
<李>常见/字符:字符识别辅助类
<李>常见/令牌:组合文本识别辅助类
<李>服务/ICodingService:代码生成服务接口
<李>服务/iCodingContext:代码生成上下文
<李>服务/iCodingState:状态模式下的服务状态
<李>服务/iCmdRunner:定义指令执行器接口,具体执行拟走责任链模式以便扩展
<李>服务/tInitialState:默认的服务状态
命令/ProjectCmd.go
项目定义指令
package project_cmd import ( “errors" “fmt" “学习/gooop/spring/autogen/command" “学习/gooop/spring/autogen/common" “os" “strings" )//,ProjectCmd defines a project with name 以及dir type ProjectCmd struct { name 字符串 dir 字符串 }//,ProjectCmdBuilder parses cli input 以及creates a ProjectCmd 实例 type ProjectCmdBuilder int const gProjectCmdPrefix =,“project “ var gErrorInvalidProjectCmd =, errors.New (“invalid project cmd") func (me * ProjectCmd),字符串(),string { return fmt.Sprintf (“project % s % s",, me.name,, me.dir) } func (me * ProjectCmd),应用(ctx command.ICmdContext), error { 恐慌(“implements me") } func (me * ProjectCmdBuilder),构建(line 字符串),(错误,,command.ICmd), { if ! common.Tokens.MatchString(线,,gProjectCmdPrefix), { return 零,零 } 时间=line strings.TrimSpace ((len (gProjectCmdPrefix):)行) b, name :=, common.Tokens.MatchIdentifier(线) if ! b , { return gErrorInvalidProjectCmd nil } 时间=line 线(len(名称):) b, spaces :=, common.Tokens.MatchSpaces(线) if ! b , { return gErrorInvalidProjectCmd nil } 时间=line 线(len(空间):) b, dir :=, common.Tokens.MatchDir(线) if ! b , { return gErrorInvalidProjectCmd nil } _,e :=, os.Stat (dir) if e !=, nil { return e, nil } return nil,,, ProjectCmd{名字的不同之处是,dir } }
常见/Chars.go
字符识别辅助类
package 常见 type tChars int var Chars =,新(tChars) func (me * tChars), IsSpace (it 符文),bool { switch it { & # 39;case & # 39;: return 真正的 case & # 39; \ t # 39;: return 真正的 case & # 39; \ " # 39;: return 真正的 case & # 39; \ n # 39;: return 真正的 } return 假 } func (me * tChars), Is09 (it 符文),bool { return it 祝辞=,& # 39;0 & # 39;,,,,it & lt;=, & # 39; 9 & # 39; } func (me * tChars), Is19 (it 符文),bool { return it 祝辞=,& # 39;1 & # 39;,,,,it & lt;=, & # 39; 9 & # 39; } func (me * tChars),胰岛(it 符文),bool { return (it 祝辞=,& # 39;一个# 39;,,,,it & lt;=, & # 39; z # 39;), | |, (it 祝辞=,& # 39;一个# 39;,,,,it & lt;=, & # 39; z # 39;) } func (me * tChars), IsUnderscore (it 符文),bool { return it ==, & # 39; _ # 39; } func (me * tChars), IsLB (it 符文),bool { return it ==, & # 39; (& # 39; } func (me * tChars), IsRB (it 符文),bool { return it ==, & # 39;) & # 39; } func (me * tChars), IsChar (it 符文,args…,符文),bool { for _ v :=, range args { if v ==, it { return 真正的 } } return 假 } func (me * tChars), IsSQuote (it 符文),bool { return me.IsChar (,, & # 39; \ & # 39; & # 39;) } null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null