From 443d49cbef8f564863c4064e57cdd30f21ac45e0 Mon Sep 17 00:00:00 2001 From: Max Date: Sat, 8 Jan 2022 17:45:45 +0800 Subject: [PATCH] + ArrayGet & ArrayIndexes helper --- helper/array.process.go | 22 ++++++++++++++++++++++ helper/array_test.go | 21 +++++++++++++++++++++ helper/process.go | 2 ++ 3 files changed, 45 insertions(+) diff --git a/helper/array.process.go b/helper/array.process.go index 4a3672c0..16073cf5 100644 --- a/helper/array.process.go +++ b/helper/array.process.go @@ -69,3 +69,25 @@ func ProcessArrayMapSet(process *gou.Process) interface{} { } return process.Args[0] } + +// ProcessArrayIndexes xiang.helper.ArrayIndexes 返回数组索引。 +func ProcessArrayIndexes(process *gou.Process) interface{} { + process.ValidateArgNums(1) + records := process.ArgsArray(0) + res := []int{} + for index := range records { + res = append(res, index) + } + return res +} + +// ProcessArrayGet xiang.helper.ArrayGet 返回指定索引数据 +func ProcessArrayGet(process *gou.Process) interface{} { + process.ValidateArgNums(2) + records := process.ArgsArray(0) + index := process.ArgsInt(1) + if index >= len(records) { + return nil + } + return records[index] +} diff --git a/helper/array_test.go b/helper/array_test.go index 88ce6a28..099c9506 100644 --- a/helper/array_test.go +++ b/helper/array_test.go @@ -166,3 +166,24 @@ func TestProcessArrayUnique(t *testing.T) { assert.True(t, ok) assert.Equal(t, []interface{}{1, 2, 3}, res) } + +func TestProcessArrayIndexes(t *testing.T) { + args := []interface{}{ + []interface{}{1, 2, 3, 3}, + } + response := gou.NewProcess("xiang.helper.ArrayIndexes", args...).Run() + assert.NotNil(t, response) + res, ok := response.([]int) + assert.True(t, ok) + assert.Equal(t, []int{0, 1, 2, 3}, res) +} + +func TestProcessArrayGet(t *testing.T) { + + response := gou.NewProcess("xiang.helper.ArrayGet", []interface{}{1, 2, 3, 3}, 2).Run() + assert.Equal(t, 3, response) + + response = gou.NewProcess("xiang.helper.ArrayGet", []interface{}{1, 2, 3, 3}, 4).Run() + assert.Nil(t, response) + +} diff --git a/helper/process.go b/helper/process.go index 666dd7c3..da794f3a 100644 --- a/helper/process.go +++ b/helper/process.go @@ -7,6 +7,8 @@ import ( func init() { // 注册处理器 + gou.RegisterProcessHandler("xiang.helper.ArrayGet", ProcessArrayGet) + gou.RegisterProcessHandler("xiang.helper.ArrayIndexes", ProcessArrayIndexes) gou.RegisterProcessHandler("xiang.helper.ArrayPluck", ProcessArrayPluck) gou.RegisterProcessHandler("xiang.helper.ArraySplit", ProcessArraySplit) gou.RegisterProcessHandler("xiang.helper.ArrayColumn", ProcessArrayColumn)