diff --git a/renderer/html/html.go b/renderer/html/html.go
index b2ca75b..8134b8b 100644
--- a/renderer/html/html.go
+++ b/renderer/html/html.go
@@ -651,8 +651,29 @@ func RenderAttributes(w util.BufWriter, node ast.Node, filter util.BytesFilter)
_, _ = w.WriteString(" ")
_, _ = w.Write(attr.Name)
_, _ = w.WriteString(`="`)
- // TODO: convert numeric values to strings
- _, _ = w.Write(util.EscapeHTML(attr.Value.([]byte)))
+ // convert attribute values to strings
+ var value []byte
+ switch v := attr.Value.(type) {
+ case []byte:
+ value = v
+ case string:
+ value = util.StringToReadOnlyBytes(v)
+ case float64:
+ value = util.StringToReadOnlyBytes(
+ strconv.FormatFloat(v, 'f', -1, 32))
+ case []interface{}:
+ var buf bytes.Buffer
+ for i, obj := range v {
+ if i > 0 {
+ _ = buf.WriteByte(' ')
+ }
+ _, _ = fmt.Fprint(&buf, obj)
+ }
+ value = buf.Bytes()
+ default:
+ value = util.StringToReadOnlyBytes(fmt.Sprint(v))
+ }
+ _, _ = w.Write(util.EscapeHTML(value))
_ = w.WriteByte('"')
}
}