4
0
mirror of https://github.com/cwinfo/matterbridge.git synced 2025-07-03 11:57:45 +00:00

Update vendor (#1414)

This commit is contained in:
Wim
2021-03-20 22:40:23 +01:00
committed by GitHub
parent 3a8857c8c9
commit ee5d9b43b5
187 changed files with 6746 additions and 1611 deletions

View File

@ -121,6 +121,10 @@ var builtinFuncs = []*BuiltinFunction{
Name: "format",
Value: builtinFormat,
},
{
Name: "range",
Value: builtinRange,
},
}
// GetAllBuiltinFunctions returns all builtin function objects.
@ -323,6 +327,71 @@ func builtinLen(args ...Object) (Object, error) {
}
}
//range(start, stop[, step])
func builtinRange(args ...Object) (Object, error) {
numArgs := len(args)
if numArgs < 2 || numArgs > 3 {
return nil, ErrWrongNumArguments
}
var start, stop, step *Int
for i, arg := range args {
v, ok := args[i].(*Int)
if !ok {
var name string
switch i {
case 0:
name = "start"
case 1:
name = "stop"
case 2:
name = "step"
}
return nil, ErrInvalidArgumentType{
Name: name,
Expected: "int",
Found: arg.TypeName(),
}
}
if i == 2 && v.Value <= 0 {
return nil, ErrInvalidRangeStep
}
switch i {
case 0:
start = v
case 1:
stop = v
case 2:
step = v
}
}
if step == nil {
step = &Int{Value: int64(1)}
}
return buildRange(start.Value, stop.Value, step.Value), nil
}
func buildRange(start, stop, step int64) *Array {
array := &Array{}
if start <= stop {
for i := start; i < stop; i += step {
array.Value = append(array.Value, &Int{
Value: i,
})
}
} else {
for i := start; i > stop; i -= step {
array.Value = append(array.Value, &Int{
Value: i,
})
}
}
return array
}
func builtinFormat(args ...Object) (Object, error) {
numArgs := len(args)
if numArgs == 0 {

View File

@ -49,6 +49,9 @@ var (
// ErrNotImplemented is an error where an Object has not implemented a
// required method.
ErrNotImplemented = errors.New("not implemented")
// ErrInvalidRangeStep is an error where the step parameter is less than or equal to 0 when using builtin range function.
ErrInvalidRangeStep = errors.New("range step must be greater than 0")
)
// ErrInvalidArgumentType represents an invalid argument value type error.