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 CreatePopupFromResources, CreatePopupFromText, and CreatePopupFromObject functions
|
||||||
* Added implementation of Properties interface to Popup
|
* Added implementation of Properties interface to Popup
|
||||||
* Changed ParseDataText function return values
|
* 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
|
# v0.19.0
|
||||||
|
|
||||||
|
|
|
@ -541,7 +541,7 @@ func animationSet(properties Properties, tag PropertyName, value any) []Property
|
||||||
|
|
||||||
case ArrayNode:
|
case ArrayNode:
|
||||||
props := []AnimatedProperty{}
|
props := []AnimatedProperty{}
|
||||||
for _, val := range value.ArrayElements() {
|
for val := range value.ArrayElements() {
|
||||||
if val.IsObject() {
|
if val.IsObject() {
|
||||||
if prop, ok := parseObject(val.Object()); ok {
|
if prop, ok := parseObject(val.Object()); ok {
|
||||||
props = append(props, prop)
|
props = append(props, prop)
|
||||||
|
|
25
data.go
25
data.go
|
@ -93,7 +93,10 @@ type DataNode interface {
|
||||||
ArrayElement(index int) DataValue
|
ArrayElement(index int) DataValue
|
||||||
|
|
||||||
// ArrayElements returns an array of objects if that node is an array
|
// 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 returns an array of a params(map) if that node is an array
|
||||||
ArrayAsParams() []Params
|
ArrayAsParams() []Params
|
||||||
|
@ -340,11 +343,25 @@ func (node *dataNode) ArrayElement(index int) DataValue {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (node *dataNode) ArrayElements() []DataValue {
|
func (node *dataNode) Array() []DataValue {
|
||||||
if node.array != nil {
|
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 {
|
func (node *dataNode) ArrayAsParams() []Params {
|
||||||
|
|
|
@ -127,7 +127,7 @@ func parseProperties(properties Properties, object DataObject) {
|
||||||
properties.Set(PropertyName(node.Tag()), node.Object())
|
properties.Set(PropertyName(node.Tag()), node.Object())
|
||||||
|
|
||||||
case ArrayNode:
|
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) {
|
func (session *sessionData) handleResize(data DataObject) {
|
||||||
if node := data.PropertyByTag("views"); node != nil && node.Type() == ArrayNode {
|
if node := data.PropertyByTag("views"); node != nil && node.Type() == ArrayNode {
|
||||||
for _, el := range node.ArrayElements() {
|
for el := range node.ArrayElements() {
|
||||||
if el.IsObject() {
|
if el.IsObject() {
|
||||||
obj := el.Object()
|
obj := el.Object()
|
||||||
getFloat := func(tag string) float64 {
|
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() {
|
for node := range obj.Properties() {
|
||||||
switch node.Type() {
|
switch node.Type() {
|
||||||
case ArrayNode:
|
case ArrayNode:
|
||||||
params[PropertyName(node.Tag())] = node.ArrayElements()
|
params[PropertyName(node.Tag())] = node.Array()
|
||||||
|
|
||||||
case ObjectNode:
|
case ObjectNode:
|
||||||
params[PropertyName(node.Tag())] = node.Object()
|
params[PropertyName(node.Tag())] = node.Object()
|
||||||
|
|
Loading…
Reference in New Issue