Explorar el Código

优化数据结构

fancl hace 2 años
padre
commit
e0efe83bda
Se han modificado 1 ficheros con 28 adiciones y 17 borrados
  1. 28 17
      pgenr.go

+ 28 - 17
pgenr.go

@@ -34,6 +34,8 @@ type (
 		Html() string
 	}
 
+	Style map[string]string
+
 	TextOption func(t *Text)
 
 	ButtonOption func(btn *Button)
@@ -43,14 +45,14 @@ type (
 		Content string
 		Theme   string
 		Color   string
-		Style   map[string]string
+		Style   Style
 	}
 
 	Button struct {
 		Url   string
 		Text  string
 		Color string
-		Style map[string]string
+		Style Style
 	}
 
 	Entry struct {
@@ -82,6 +84,22 @@ type (
 	}
 )
 
+func (s Style) Css(name string, value string) {
+	s[name] = value
+}
+
+func (s Style) String() string {
+	br := getBuffer()
+	defer releaseBuffer(br)
+	for k, v := range s {
+		br.WriteString(k)
+		br.WriteString(":")
+		br.WriteString(v)
+		br.WriteString(";")
+	}
+	return br.String()
+}
+
 func (a *Action) Html() string {
 	return a.String()
 }
@@ -254,12 +272,7 @@ func (button *Button) String() string {
 	}
 	if len(button.Style) > 0 {
 		br.WriteString(" style='")
-		for k, v := range button.Style {
-			br.WriteString(k)
-			br.WriteString(":")
-			br.WriteString(v)
-			br.WriteString(";")
-		}
+		br.WriteString(button.Style.String())
 		br.WriteString("'")
 	}
 	br.WriteString(">")
@@ -291,13 +304,15 @@ func (table *Table) String() string {
 	br.WriteString("<table class='table'>")
 
 	if len(table.Header) > 0 {
-		br.WriteString("<thead><tr>")
+		br.WriteString("<thead>")
+		br.WriteString("<tr>")
 		for _, text := range table.Header {
 			br.WriteString("<th>")
 			br.WriteString(text.Html())
 			br.WriteString("</th>")
 		}
-		br.WriteString("</tr></thead>")
+		br.WriteString("</tr>")
+		br.WriteString("</thead>")
 	}
 	if len(table.Body) > 0 {
 		br.WriteString("<tbody>")
@@ -312,7 +327,8 @@ func (table *Table) String() string {
 		}
 		br.WriteString("</tbody>")
 	}
-	br.WriteString("</table></div>")
+	br.WriteString("</table>")
+	br.WriteString("</div>")
 	return br.String()
 }
 
@@ -341,12 +357,7 @@ func (text *Text) String() string {
 	}
 	if len(text.Style) > 0 {
 		br.WriteString(" style='")
-		for k, v := range text.Style {
-			br.WriteString(k)
-			br.WriteString(":")
-			br.WriteString(v)
-			br.WriteString(";")
-		}
+		br.WriteString(text.Style.String())
 		br.WriteString("'")
 	}
 	br.WriteString(">")