new syntax to get items from collection: collection[index]. Supported collections are string, list and dict

This commit is contained in:
2024-05-24 22:51:01 +02:00
parent e5f63c3d9d
commit 03d4c192c2
9 changed files with 126 additions and 30 deletions
+3 -3
View File
@@ -17,7 +17,7 @@ func newDotTerm(tk *Token) (inst *term) {
}
}
func verifyIndex(ctx ExprContext, indexTerm *term, maxValue int) (index int, err error) {
func verifyDotIndex(ctx ExprContext, indexTerm *term, maxValue int) (index int, err error) {
var v int
var indexValue any
if indexValue, err = indexTerm.compute(ctx); err == nil {
@@ -51,12 +51,12 @@ func evalDot(ctx ExprContext, self *term) (v any, err error) {
case *ListType:
var index int
array := ([]any)(*unboxedValue)
if index, err = verifyIndex(ctx, indexTerm, len(array)); err == nil {
if index, err = verifyDotIndex(ctx, indexTerm, len(array)); err == nil {
v = array[index]
}
case string:
var index int
if index, err = verifyIndex(ctx, indexTerm, len(unboxedValue)); err == nil {
if index, err = verifyDotIndex(ctx, indexTerm, len(unboxedValue)); err == nil {
v = string(unboxedValue[index])
}
case *DictType: