Refactor backend SVG package and add tests (#26335)

Introduce a well-tested `svg.Normalize` function.
Make `RenderHTML` faster and more stable.
This commit is contained in:
wxiaoguang 2023-08-05 12:34:59 +08:00 committed by GitHub
parent 12c249c5ca
commit 5db4c8db93
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 113 additions and 40 deletions

View file

@ -6,28 +6,20 @@ package html
// ParseSizeAndClass get size and class from string with default values
// If present, "others" expects the new size first and then the classes to use
func ParseSizeAndClass(defaultSize int, defaultClass string, others ...any) (int, string) {
if len(others) == 0 {
return defaultSize, defaultClass
}
size := defaultSize
_size, ok := others[0].(int)
if ok && _size != 0 {
size = _size
}
if len(others) == 1 {
return size, defaultClass
}
class := defaultClass
if _class, ok := others[1].(string); ok && _class != "" {
if defaultClass == "" {
class = _class
} else {
class = defaultClass + " " + _class
if len(others) >= 1 {
if v, ok := others[0].(int); ok && v != 0 {
size = v
}
}
class := defaultClass
if len(others) >= 2 {
if v, ok := others[1].(string); ok && v != "" {
if class != "" {
class += " "
}
class += v
}
}
return size, class
}