Skip to content

Commit fea6dd8

Browse files
authored
input fields support lua.Value (#12)
1 parent 59516d4 commit fea6dd8

3 files changed

Lines changed: 29 additions & 2 deletions

File tree

fixtures/any.lua

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
local api = require("test")
2+
function main(input)
3+
return api.toNumbers(input)
4+
end

module_test.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ func testModule() Module {
3030
must(m.Register("enrich", enrich))
3131
must(m.Register("error", errorfunc))
3232
must(m.Register("error1", errorfunc1))
33+
must(m.Register("toNumbers", toNumbers))
3334
return m
3435
}
3536

@@ -49,9 +50,9 @@ func errorfunc1(_ Table) (String, error) {
4950
return "", errors.New("throwing error")
5051
}
5152

52-
func hash(s String) (Number, error) {
53+
func hash(s Value) (Number, error) {
5354
h := fnv.New32a()
54-
h.Write([]byte(s))
55+
h.Write([]byte(s.(String)))
5556

5657
return Number(h.Sum32()), nil
5758
}
@@ -79,6 +80,15 @@ func enrich(name String, request Table) (Table, error) {
7980
return request, nil
8081
}
8182

83+
func toNumbers(v Value) (Numbers, error) {
84+
switch t := v.(type) {
85+
case Numbers:
86+
return t, nil
87+
default:
88+
return nil, fmt.Errorf("unsupported type %T", v)
89+
}
90+
}
91+
8292
func Test_Join(t *testing.T) {
8393
s, err := newScript("fixtures/join.lua")
8494
assert.NoError(t, err)
@@ -230,3 +240,13 @@ func TestUserdata(t *testing.T) {
230240
assert.NoError(t, err)
231241
assert.Equal(t, String("table"), out)
232242
}
243+
244+
func Test_Any(t *testing.T) {
245+
s, err := newScript("fixtures/any.lua")
246+
assert.NoError(t, err)
247+
248+
out, err := s.Run(context.Background(), []float64{1.1, 2.1})
249+
assert.NoError(t, err)
250+
assert.Equal(t, TypeNumbers, out.Type())
251+
assert.Equal(t, []float64{1.1, 2.1}, out.Native())
252+
}

value.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ var (
2525
typeBools = reflect.TypeOf(Bools(nil))
2626
typeTable = reflect.TypeOf(Table(nil))
2727
typeArray = reflect.TypeOf(Array(nil))
28+
typeValue = reflect.TypeOf((*Value)(nil)).Elem()
2829
)
2930

3031
var typeMap = map[reflect.Type]Type{
@@ -36,6 +37,7 @@ var typeMap = map[reflect.Type]Type{
3637
typeBools: TypeBools,
3738
typeTable: TypeTable,
3839
typeArray: TypeArray,
40+
typeValue: TypeValue,
3941
}
4042

4143
// Type represents a type of the value
@@ -52,6 +54,7 @@ const (
5254
TypeStrings
5355
TypeTable
5456
TypeArray
57+
TypeValue
5558
)
5659

5760
// Value represents a returned

0 commit comments

Comments
 (0)