mirror of https://github.com/anoshenko/rui.git
Changed DataValue interface
Renamed `ArrayElements() []DataValue` method of DataNode interface to `Array() []DataValue` Added `ArrayElements() iter.Seq[DataValue]` iterator to DataNode interface
This commit is contained in:
parent
86f3f4c731
commit
4c76000254
|
@ -5,6 +5,10 @@
|
|||
* Added CreatePopupFromResources, CreatePopupFromText, and CreatePopupFromObject functions
|
||||
* Added implementation of Properties interface to Popup
|
||||
* Changed ParseDataText function return values
|
||||
* Added `Properties() iter.Seq[DataNode]` iterator to DataObject interface
|
||||
* Renamed `ArrayElements() []DataValue` method of DataNode interface to `Array() []DataValue`
|
||||
* Added `ArrayElements() iter.Seq[DataValue]` iterator to DataNode interface
|
||||
|
||||
|
||||
# v0.19.0
|
||||
|
||||
|
|
|
@ -541,7 +541,7 @@ func animationSet(properties Properties, tag PropertyName, value any) []Property
|
|||
|
||||
case ArrayNode:
|
||||
props := []AnimatedProperty{}
|
||||
for _, val := range value.ArrayElements() {
|
||||
for val := range value.ArrayElements() {
|
||||
if val.IsObject() {
|
||||
if prop, ok := parseObject(val.Object()); ok {
|
||||
props = append(props, prop)
|
||||
|
|
25
data.go
25
data.go
|
@ -93,7 +93,10 @@ type DataNode interface {
|
|||
ArrayElement(index int) DataValue
|
||||
|
||||
// ArrayElements returns an array of objects if that node is an array
|
||||
ArrayElements() []DataValue
|
||||
Array() []DataValue
|
||||
|
||||
// ArrayElements returns an iterator to access the array elements of objects if that node is an array
|
||||
ArrayElements() iter.Seq[DataValue]
|
||||
|
||||
// ArrayAsParams returns an array of a params(map) if that node is an array
|
||||
ArrayAsParams() []Params
|
||||
|
@ -340,11 +343,25 @@ func (node *dataNode) ArrayElement(index int) DataValue {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (node *dataNode) ArrayElements() []DataValue {
|
||||
func (node *dataNode) Array() []DataValue {
|
||||
if node.array != nil {
|
||||
return node.array
|
||||
return slices.Clone(node.array)
|
||||
}
|
||||
return []DataValue{node.value}
|
||||
}
|
||||
|
||||
func (node *dataNode) ArrayElements() iter.Seq[DataValue] {
|
||||
return func(yield func(DataValue) bool) {
|
||||
if node.array != nil {
|
||||
for _, element := range node.array {
|
||||
if !yield(element) {
|
||||
return
|
||||
}
|
||||
}
|
||||
} else {
|
||||
yield(node.value)
|
||||
}
|
||||
}
|
||||
return []DataValue{}
|
||||
}
|
||||
|
||||
func (node *dataNode) ArrayAsParams() []Params {
|
||||
|
|
|
@ -127,7 +127,7 @@ func parseProperties(properties Properties, object DataObject) {
|
|||
properties.Set(PropertyName(node.Tag()), node.Object())
|
||||
|
||||
case ArrayNode:
|
||||
properties.Set(PropertyName(node.Tag()), node.ArrayElements())
|
||||
properties.Set(PropertyName(node.Tag()), node.Array())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -658,7 +658,7 @@ func (session *sessionData) handleRootSize(data DataObject) {
|
|||
|
||||
func (session *sessionData) handleResize(data DataObject) {
|
||||
if node := data.PropertyByTag("views"); node != nil && node.Type() == ArrayNode {
|
||||
for _, el := range node.ArrayElements() {
|
||||
for el := range node.ArrayElements() {
|
||||
if el.IsObject() {
|
||||
obj := el.Object()
|
||||
getFloat := func(tag string) float64 {
|
||||
|
|
2
theme.go
2
theme.go
|
@ -699,7 +699,7 @@ func (theme *theme) addText(themeText string) bool {
|
|||
for node := range obj.Properties() {
|
||||
switch node.Type() {
|
||||
case ArrayNode:
|
||||
params[PropertyName(node.Tag())] = node.ArrayElements()
|
||||
params[PropertyName(node.Tag())] = node.Array()
|
||||
|
||||
case ObjectNode:
|
||||
params[PropertyName(node.Tag())] = node.Object()
|
||||
|
|
Loading…
Reference in New Issue