|
|
@ -12,7 +12,8 @@ var regexp_d = regexp.MustCompile(`^[1-9][0-9]*d([468]|1[02]|20|100)$`) |
|
|
|
|
|
|
|
|
type VariableType interface { |
|
|
type VariableType interface { |
|
|
Name() string |
|
|
Name() string |
|
|
Validate(s string) bool |
|
|
|
|
|
|
|
|
Validate(value string) bool |
|
|
|
|
|
DefaultValue() string |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
type VariableType_badType struct {} |
|
|
type VariableType_badType struct {} |
|
|
@ -25,6 +26,10 @@ func (*VariableType_badType) Validate(s string) bool { |
|
|
return false |
|
|
return false |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (*VariableType_badType) DefaultValue() string { |
|
|
|
|
|
return "" |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
type VariableType_bool struct {} |
|
|
type VariableType_bool struct {} |
|
|
|
|
|
|
|
|
func (*VariableType_bool) Name() string { |
|
|
func (*VariableType_bool) Name() string { |
|
|
@ -47,6 +52,10 @@ func (self *VariableType_bool) Validate(value string) bool { |
|
|
return err == nil |
|
|
return err == nil |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (self *VariableType_bool) DefaultValue() string { |
|
|
|
|
|
return "false" |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
type VariableType_int struct {} |
|
|
type VariableType_int struct {} |
|
|
|
|
|
|
|
|
func (*VariableType_int) Name() string { |
|
|
func (*VariableType_int) Name() string { |
|
|
@ -62,6 +71,10 @@ func (self *VariableType_int) Validate(value string) bool { |
|
|
return err == nil |
|
|
return err == nil |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (self *VariableType_int) DefaultValue() string { |
|
|
|
|
|
return "0" |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
type VariableType_float struct {} |
|
|
type VariableType_float struct {} |
|
|
|
|
|
|
|
|
func (*VariableType_float) Name() string { |
|
|
func (*VariableType_float) Name() string { |
|
|
@ -77,6 +90,10 @@ func (self *VariableType_float) Validate(value string) bool { |
|
|
return err == nil |
|
|
return err == nil |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (self *VariableType_float) DefaultValue() string { |
|
|
|
|
|
return "0.0" |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
type VariableType_string struct {} |
|
|
type VariableType_string struct {} |
|
|
|
|
|
|
|
|
func (*VariableType_string) Name() string { |
|
|
func (*VariableType_string) Name() string { |
|
|
@ -87,6 +104,10 @@ func (*VariableType_string) Validate(s string) bool { |
|
|
return true |
|
|
return true |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (self *VariableType_string) DefaultValue() string { |
|
|
|
|
|
return "" |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
type VariableType_d struct {} |
|
|
type VariableType_d struct {} |
|
|
|
|
|
|
|
|
func (*VariableType_d) Name() string { |
|
|
func (*VariableType_d) Name() string { |
|
|
@ -97,6 +118,11 @@ func (*VariableType_d) Validate(s string) bool { |
|
|
return regexp_d.MatchString(s) |
|
|
return regexp_d.MatchString(s) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (self *VariableType_d) DefaultValue() string { |
|
|
|
|
|
//FIXME: non-generic version
|
|
|
|
|
|
return "" |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
func makeVariableType(s string) VariableType { |
|
|
func makeVariableType(s string) VariableType { |
|
|
switch(strings.ToLower(s)) { |
|
|
switch(strings.ToLower(s)) { |
|
|
case "bool": |
|
|
case "bool": |
|
|
@ -125,18 +151,27 @@ func (self *CustomEnum) Name() string { |
|
|
return self.name |
|
|
return self.name |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func (self *CustomEnum) Validate(s string) bool { |
|
|
|
|
|
if !self.BaseType.Validate(s) { |
|
|
|
|
|
return false |
|
|
|
|
|
|
|
|
func (self *CustomEnum) ToId(value string) (int, error) { |
|
|
|
|
|
if !self.BaseType.Validate(value) { |
|
|
|
|
|
return 0, errors.New("Invalid value") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
for i := 0; i < len(self.Values); i++ { |
|
|
for i := 0; i < len(self.Values); i++ { |
|
|
if self.Values[i] == s { |
|
|
|
|
|
return true |
|
|
|
|
|
|
|
|
if self.Values[i] == value { |
|
|
|
|
|
return i, nil |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return false |
|
|
|
|
|
|
|
|
return 0, errors.New("No such element") |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (self *CustomEnum) Validate(value string) bool { |
|
|
|
|
|
_, err := self.ToId(value) |
|
|
|
|
|
return err == nil |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (self *CustomEnum) DefaultValue() string { |
|
|
|
|
|
return "" |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
type CustomStruct struct { |
|
|
type CustomStruct struct { |
|
|
@ -154,6 +189,11 @@ func (self *CustomStruct) Validate(s string) bool { |
|
|
return false |
|
|
return false |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (self *CustomStruct) DefaultValue() string { |
|
|
|
|
|
//FIXME: non-generic version
|
|
|
|
|
|
return "" |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
func parseCustomEnum(root xmlNode) (*CustomEnum, error) { |
|
|
func parseCustomEnum(root xmlNode) (*CustomEnum, error) { |
|
|
customEnum := CustomEnum {} |
|
|
customEnum := CustomEnum {} |
|
|
|
|
|
|
|
|
|