server
Some checks failed
Build / build (push) Failing after 6m4s
Test / build (push) Failing after 6m33s

This commit is contained in:
Chuck Smith
2024-04-02 12:21:41 -04:00
parent 862119e90e
commit 4c9ec5aaaa
77 changed files with 1181 additions and 244 deletions

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Abs ...
func Abs(args ...object.Object) object.Object {
func Abs(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"abs", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"syscall"
)
// Accept ...
func Accept(args ...object.Object) object.Object {
func Accept(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"accept", args,
typing.ExactArgs(1),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Args ...
func args(args ...object.Object) object.Object {
func args(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"args", args,
typing.ExactArgs(0),
@@ -14,8 +15,8 @@ func args(args ...object.Object) object.Object {
return newError(err.Error())
}
elements := make([]object.Object, len(object.Args))
for i, arg := range object.Args {
elements := make([]object.Object, len(ctx.Args()))
for i, arg := range ctx.Args() {
elements[i] = object.String{Value: arg}
}
return &object.Array{Elements: elements}

View File

@@ -2,13 +2,14 @@ package builtins
import (
"fmt"
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"os"
)
// Assert ...
func Assert(args ...object.Object) object.Object {
func Assert(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"assert", args,
typing.ExactArgs(2),

View File

@@ -2,13 +2,14 @@ package builtins
import (
"fmt"
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"strconv"
)
// Bin ...
func Bin(args ...object.Object) object.Object {
func Bin(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"bin", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"syscall"
)
// Bind ...
func Bind(args ...object.Object) object.Object {
func Bind(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"bind", args,
typing.ExactArgs(2),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Bool ...
func Bool(args ...object.Object) object.Object {
func Bool(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"bool", args,
typing.ExactArgs(1),

View File

@@ -2,12 +2,13 @@ package builtins
import (
"fmt"
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Chr ...
func Chr(args ...object.Object) object.Object {
func Chr(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"chr", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"syscall"
)
// Close ...
func Close(args ...object.Object) object.Object {
func Close(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"close", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"syscall"
)
// Connect ...
func Connect(args ...object.Object) object.Object {
func Connect(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"connect", args,
typing.ExactArgs(2),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Divmod ...
func Divmod(args ...object.Object) object.Object {
func Divmod(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"divmod", args,
typing.ExactArgs(2),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Exit ...
func Exit(args ...object.Object) object.Object {
func Exit(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"exit", args,
typing.RangeOfArgs(0, 1),
@@ -20,7 +21,7 @@ func Exit(args ...object.Object) object.Object {
status = int(args[0].(object.Integer).Value)
}
object.ExitFunction(status)
ctx.Exit(status)
return nil
}

View File

@@ -1,6 +1,7 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
@@ -11,7 +12,7 @@ import (
)
// FFI ...
func FFI(args ...object.Object) object.Object {
func FFI(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"ffi", args,
typing.ExactArgs(2),

View File

@@ -1,6 +1,7 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"sort"
@@ -11,7 +12,7 @@ import (
)
// Find ...
func Find(args ...object.Object) object.Object {
func Find(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"find", args,
typing.ExactArgs(2),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// First ...
func First(args ...object.Object) object.Object {
func First(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"first", args,
typing.ExactArgs(1),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// HashOf ...
func HashOf(args ...object.Object) object.Object {
func HashOf(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"hash", args,
typing.ExactArgs(1),

View File

@@ -2,13 +2,14 @@ package builtins
import (
"fmt"
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"strconv"
)
// Hex ...
func Hex(args ...object.Object) object.Object {
func Hex(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"hex", args,
typing.ExactArgs(1),

View File

@@ -2,12 +2,13 @@ package builtins
import (
"fmt"
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// IdOf ...
func IdOf(args ...object.Object) object.Object {
func IdOf(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"id", args,
typing.ExactArgs(1),

View File

@@ -4,13 +4,14 @@ import (
"bufio"
"fmt"
"io"
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"os"
)
// Input ...
func Input(args ...object.Object) object.Object {
func Input(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"input", args,
typing.RangeOfArgs(0, 1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"strconv"
)
// Int ...
func Int(args ...object.Object) object.Object {
func Int(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"int", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"strings"
)
// Join ...
func Join(args ...object.Object) object.Object {
func Join(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"join", args,
typing.ExactArgs(2),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Last ...
func Last(args ...object.Object) object.Object {
func Last(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"last", args,
typing.ExactArgs(1),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Len ...
func Len(args ...object.Object) object.Object {
func Len(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"len", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"syscall"
)
// Listen ...
func Listen(args ...object.Object) object.Object {
func Listen(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"listen", args,
typing.ExactArgs(2),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"strings"
)
// Lower ...
func Lower(args ...object.Object) object.Object {
func Lower(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"lower", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"sort"
)
// Max ...
func Max(args ...object.Object) object.Object {
func Max(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"max", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"sort"
)
// Min ...
func Min(args ...object.Object) object.Object {
func Min(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"min", args,
typing.ExactArgs(1),

View File

@@ -2,13 +2,14 @@ package builtins
import (
"fmt"
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"strconv"
)
// Oct ...
func Oct(args ...object.Object) object.Object {
func Oct(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"oct", args,
typing.ExactArgs(1),

View File

@@ -3,6 +3,7 @@ package builtins
import (
"fmt"
"log"
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"os"
@@ -51,7 +52,7 @@ func parseMode(mode string) (int, error) {
}
// Open ...
func Open(args ...object.Object) object.Object {
func Open(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"open", args,
typing.RangeOfArgs(1, 2),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Ord ...
func Ord(args ...object.Object) object.Object {
func Ord(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"ord", args,
typing.ExactArgs(1),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Pop ...
func Pop(args ...object.Object) object.Object {
func Pop(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"pop", args,
typing.ExactArgs(1),

View File

@@ -1,6 +1,7 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
@@ -18,7 +19,7 @@ func pow(x, y int64) int64 {
}
// Pow ...
func Pow(args ...object.Object) object.Object {
func Pow(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"pow", args,
typing.ExactArgs(2),

View File

@@ -2,12 +2,13 @@ package builtins
import (
"fmt"
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Print ...
func Print(args ...object.Object) object.Object {
func Print(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"print", args,
typing.MinimumArgs(1),
@@ -16,13 +17,13 @@ func Print(args ...object.Object) object.Object {
return newError(err.Error())
}
fmt.Fprint(object.Stdout, args[0].String())
fmt.Fprint(ctx.Stdout(), args[0].String())
return nil
}
// Println ...
func Println(args ...object.Object) object.Object {
func Println(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"println", args,
typing.MinimumArgs(1),
@@ -30,7 +31,7 @@ func Println(args ...object.Object) object.Object {
return newError(err.Error())
}
fmt.Fprintln(object.Stdout, args[0].String())
fmt.Fprintln(ctx.Stdout(), args[0].String())
return nil
}

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Push ...
func Push(args ...object.Object) object.Object {
func Push(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"push", args,
typing.ExactArgs(2),

View File

@@ -1,6 +1,7 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"syscall"
@@ -10,7 +11,7 @@ import (
const DefaultBufferSize = 4096
// Read ...
func Read(args ...object.Object) object.Object {
func Read(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"read", args,
typing.RangeOfArgs(1, 2),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"os"
)
// ReadFile ...
func ReadFile(args ...object.Object) object.Object {
func ReadFile(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"readfile", args,
typing.ExactArgs(1),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Rest ...
func Rest(args ...object.Object) object.Object {
func Rest(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"rest", args,
typing.ExactArgs(1),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Reversed ...
func Reversed(args ...object.Object) object.Object {
func Reversed(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"reversed", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"syscall"
)
// Seek ...
func Seek(args ...object.Object) object.Object {
func Seek(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"seek", args,
typing.RangeOfArgs(1, 3),

View File

@@ -1,6 +1,7 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"strings"
@@ -8,7 +9,7 @@ import (
)
// Socket ...
func Socket(args ...object.Object) object.Object {
func Socket(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"socket", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"sort"
)
// Sorted ...
func Sorted(args ...object.Object) object.Object {
func Sorted(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"sort", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"strings"
)
// Split ...
func Split(args ...object.Object) object.Object {
func Split(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"split", args,
typing.RangeOfArgs(1, 2),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// Str ...
func Str(args ...object.Object) object.Object {
func Str(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"str", args,
typing.ExactArgs(1),

View File

@@ -1,12 +1,13 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
)
// TypeOf ...
func TypeOf(args ...object.Object) object.Object {
func TypeOf(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"type", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"strings"
)
// Upper ...
func Upper(args ...object.Object) object.Object {
func Upper(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"upper", args,
typing.ExactArgs(1),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"syscall"
)
// Write ...
func Write(args ...object.Object) object.Object {
func Write(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"write", args,
typing.ExactArgs(2),

View File

@@ -1,13 +1,14 @@
package builtins
import (
"monkey/internal/context"
"monkey/internal/object"
"monkey/internal/typing"
"os"
)
// WriteFile ...
func WriteFile(args ...object.Object) object.Object {
func WriteFile(ctx context.Context, args ...object.Object) object.Object {
if err := typing.Check(
"writefile", args,
typing.ExactArgs(2),