From 9b27cb4a5517107323d1bf142fed2a0a52c6fc27 Mon Sep 17 00:00:00 2001 From: Alexei Anoshenko Date: Sat, 6 Jul 2024 13:04:12 +0300 Subject: [PATCH] Updated Animation.String method --- animation.go | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++-- viewStyle.go | 4 ++-- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/animation.go b/animation.go index 93fc88b..2c7c9f8 100644 --- a/animation.go +++ b/animation.go @@ -411,9 +411,60 @@ func (animation *animationData) String() string { buffer.WriteString("animation {") - // TODO + for _, tag := range animation.AllTags() { + if tag != PropertyTag { + if value, ok := animation.properties[tag]; ok && value != nil { + buffer.WriteString("\n\t") + buffer.WriteString(tag) + buffer.WriteString(" = ") + writePropertyValue(buffer, tag, value, "\t") + buffer.WriteRune(',') + } + } + } - buffer.WriteString("}") + writeProperty := func(prop AnimatedProperty, indent string) { + buffer.WriteString(prop.Tag) + buffer.WriteString("{\n") + buffer.WriteString(indent) + buffer.WriteString("from = ") + writePropertyValue(buffer, "from", prop.From, indent) + buffer.WriteString(",\n") + buffer.WriteString(indent) + buffer.WriteString("to = ") + writePropertyValue(buffer, "to", prop.To, indent) + for key, value := range prop.KeyFrames { + buffer.WriteString(",\n") + buffer.WriteString(indent) + tag := strconv.Itoa(key) + "%" + buffer.WriteString(tag) + buffer.WriteString(" = ") + writePropertyValue(buffer, tag, value, indent) + } + buffer.WriteString("\n") + buffer.WriteString(indent[1:]) + buffer.WriteString("}") + } + + if props := animation.animatedProperties(); len(props) > 0 { + + buffer.WriteString("\n\t") + buffer.WriteString(PropertyTag) + buffer.WriteString(" = ") + if len(props) > 1 { + buffer.WriteString("[\n") + for _, prop := range props { + buffer.WriteString("\t\t") + writeProperty(prop, "\t\t\t") + buffer.WriteString(",\n") + } + buffer.WriteString("\t]") + } else { + writeProperty(props[0], "\t\t") + } + } + + buffer.WriteString("\n}") return buffer.String() } diff --git a/viewStyle.go b/viewStyle.go index 16ecd38..5332638 100644 --- a/viewStyle.go +++ b/viewStyle.go @@ -605,8 +605,8 @@ func writePropertyValue(buffer *strings.Builder, tag string, value any, indent s } else { for _, ch := range text { if (ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') || - ch == '+' || ch == '-' || ch == '@' || ch == '/' || ch == '_' || ch == ':' || - ch == '#' || ch == '%' || ch == 'π' || ch == '°' { + ch == '+' || ch == '-' || ch == '@' || ch == '/' || ch == '_' || ch == '.' || + ch == ':' || ch == '#' || ch == '%' || ch == 'π' || ch == '°' { } else { simple = false break