Browse Source

🎨 VariableType.DefaultValue()

master
n0m1s 6 years ago
parent
commit
608c8c399b
Signed by: nomis GPG Key ID: BC0454CAD76FE803
1 changed files with 47 additions and 7 deletions
  1. +47
    -7
      jdr/type.go

+ 47
- 7
jdr/type.go View File

@ -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 {}


Loading…
Cancel
Save