|
|
|
@ -13,10 +13,10 @@ type Page struct { |
|
|
|
Items []SheetItem |
|
|
|
} |
|
|
|
|
|
|
|
func (self *Page) ToHTML() template.HTML { |
|
|
|
func (page *Page) ToHTML() template.HTML { |
|
|
|
ret := "" |
|
|
|
|
|
|
|
for _, item := range self.Items { |
|
|
|
for _, item := range page.Items { |
|
|
|
ret += string(item.ToHTML()) |
|
|
|
} |
|
|
|
|
|
|
|
@ -33,21 +33,21 @@ type Block struct { |
|
|
|
Items []SheetItem |
|
|
|
} |
|
|
|
|
|
|
|
func (self *Block) Name() string { |
|
|
|
return self.name |
|
|
|
func (block *Block) Name() string { |
|
|
|
return block.name |
|
|
|
} |
|
|
|
|
|
|
|
func (self *Block) ToHTML() template.HTML { |
|
|
|
func (block *Block) ToHTML() template.HTML { |
|
|
|
begin := `<fieldset>` |
|
|
|
legend := `<legend>` + template.HTMLEscapeString(self.Name()) + `</legend>` |
|
|
|
legend := `<legend>` + template.HTMLEscapeString(block.Name()) + `</legend>` |
|
|
|
end := `</fieldset>` |
|
|
|
|
|
|
|
ret := template.HTML(begin) |
|
|
|
if self.Name() != "" { |
|
|
|
if block.Name() != "" { |
|
|
|
ret += template.HTML(legend) |
|
|
|
} |
|
|
|
|
|
|
|
for _, item := range self.Items { |
|
|
|
for _, item := range block.Items { |
|
|
|
ret += item.ToHTML() |
|
|
|
} |
|
|
|
ret += template.HTML(end) |
|
|
|
@ -60,17 +60,17 @@ type Variable struct { |
|
|
|
name string |
|
|
|
} |
|
|
|
|
|
|
|
func (self *Variable) Name() string { |
|
|
|
return self.name |
|
|
|
func (v *Variable) Name() string { |
|
|
|
return v.name |
|
|
|
} |
|
|
|
|
|
|
|
func (self *Variable) ToHTML() template.HTML { |
|
|
|
func (v *Variable) ToHTML() template.HTML { |
|
|
|
label := "" |
|
|
|
if self.name != "" { |
|
|
|
label = `<label>` + template.HTMLEscapeString(self.name) + `</label>` |
|
|
|
if v.name != "" { |
|
|
|
label = `<label>` + template.HTMLEscapeString(v.name) + `</label>` |
|
|
|
} |
|
|
|
|
|
|
|
html, err := self.Type.ToHTML(self.Type.DefaultValue()) |
|
|
|
html, err := v.Type.ToHTML(v.Type.DefaultValue()) |
|
|
|
if err != nil { |
|
|
|
log.Fatal(err) |
|
|
|
} |
|
|
|
@ -83,39 +83,39 @@ type CharacterSheet struct { |
|
|
|
Pages []*Page |
|
|
|
} |
|
|
|
|
|
|
|
func (self *CharacterSheet) Script() template.JS { |
|
|
|
func (cs *CharacterSheet) Script() template.JS { |
|
|
|
return template.JS("") |
|
|
|
} |
|
|
|
|
|
|
|
func (self *CharacterSheet) Render() template.HTML { |
|
|
|
func (cs *CharacterSheet) Render() template.HTML { |
|
|
|
ret := template.HTML("") |
|
|
|
|
|
|
|
for _, page := range self.Pages { |
|
|
|
for _, page := range cs.Pages { |
|
|
|
ret += page.ToHTML() |
|
|
|
} |
|
|
|
|
|
|
|
return ret |
|
|
|
} |
|
|
|
|
|
|
|
func (self *CharacterSheet) AddType(t VariableType) { |
|
|
|
if self.types == nil { |
|
|
|
self.types = make(map[string]VariableType) |
|
|
|
func (cs *CharacterSheet) AddType(t VariableType) { |
|
|
|
if cs.types == nil { |
|
|
|
cs.types = make(map[string]VariableType) |
|
|
|
} |
|
|
|
|
|
|
|
name := t.Name() |
|
|
|
self.types[name] = t |
|
|
|
cs.types[name] = t |
|
|
|
} |
|
|
|
|
|
|
|
func (self *CharacterSheet) AddDefaultTypes() { |
|
|
|
self.AddType(&VariableType_bool{}) |
|
|
|
self.AddType(&VariableType_int{}) |
|
|
|
self.AddType(&VariableType_float{}) |
|
|
|
self.AddType(&VariableType_string{}) |
|
|
|
self.AddType(&VariableType_d{}) |
|
|
|
func (cs *CharacterSheet) AddDefaultTypes() { |
|
|
|
cs.AddType(&VariableType_bool{}) |
|
|
|
cs.AddType(&VariableType_int{}) |
|
|
|
cs.AddType(&VariableType_float{}) |
|
|
|
cs.AddType(&VariableType_string{}) |
|
|
|
cs.AddType(&VariableType_d{}) |
|
|
|
} |
|
|
|
|
|
|
|
func (self *CharacterSheet) getType(typename string) (VariableType, error) { |
|
|
|
t, ok := self.types[typename] |
|
|
|
func (cs *CharacterSheet) getType(typename string) (VariableType, error) { |
|
|
|
t, ok := cs.types[typename] |
|
|
|
if !ok { |
|
|
|
return &VariableType_badType{}, errors.New("unknown type \"" + typename + "\"") |
|
|
|
} |
|
|
|
|