Documentation ¶
Overview ¶
builtins.go
builtins.go
Index ¶
- Variables
- func AddIndexes(ps *env.ProgramState, s *env.Spreadsheet, columns []env.Word) env.Object
- func ArrayFloat32FromSeries(block env.TSeries) []float32
- func AutoType(ps *env.ProgramState, s *env.Spreadsheet, percent float64) env.Object
- func BuiConvert(ps *env.ProgramState, arg0 env.Object, arg1 env.Object) env.Object
- func BuiValidate(env1 *env.ProgramState, arg0 env.Object, arg1 env.Object) env.Object
- func CallBuiltin(bi env.Builtin, ps *env.ProgramState, arg0_ env.Object, toLeft bool, ...) *env.ProgramState
- func CallFunction(fn env.Function, ps *env.ProgramState, arg0 env.Object, toLeft bool, ...) *env.ProgramState
- func CallFunctionArgs2(fn env.Function, ps *env.ProgramState, arg0 env.Object, arg1 env.Object, ...) *env.ProgramState
- func CallFunctionArgs4(fn env.Function, ps *env.ProgramState, arg0 env.Object, arg1 env.Object, ...) *env.ProgramState
- func Clear()
- func Conversion_EvalBlockCtx(ps *env.ProgramState, vals env.RyeCtx) env.Object
- func Conversion_EvalBlockDict(ps *env.ProgramState, vals env.Dict) env.Object
- func CopyMap(m map[string]any) map[string]any
- func DialectMath(env1 *env.ProgramState, arg0 env.Object) env.Object
- func DirectlyCallBuiltin(ps *env.ProgramState, bi env.Builtin, a0 env.Object, a1 env.Object) env.Object
- func DoGeneralInput(es *env.ProgramState, prompt string)
- func DoGeneralInputField(es *env.ProgramState, prompt string)
- func DoRyeRepl(es *env.ProgramState, showResults bool)
- func EvalBlock(ps *env.ProgramState) *env.ProgramState
- func EvalBlockInCtx(ps *env.ProgramState, ctx *env.RyeCtx) *env.ProgramState
- func EvalBlockInCtxInj(ps *env.ProgramState, ctx *env.RyeCtx, inj env.Object, injnow bool) *env.ProgramState
- func EvalBlockInj(ps *env.ProgramState, inj env.Object, injnow bool) *env.ProgramState
- func EvalExpression2(ps *env.ProgramState, limited bool) *env.ProgramState
- func EvalExpressionConcrete(ps *env.ProgramState) *env.ProgramState
- func EvalExpressionInj(ps *env.ProgramState, inj env.Object, injnow bool) (*env.ProgramState, bool)
- func EvalExpressionInjLimited(ps *env.ProgramState, inj env.Object, injnow bool) (*env.ProgramState, bool)
- func EvalGenword(ps *env.ProgramState, word env.Genword, leftVal env.Object, toLeft bool) *env.ProgramState
- func EvalGetword(ps *env.ProgramState, word env.Getword, leftVal env.Object, toLeft bool) *env.ProgramState
- func EvalObject(ps *env.ProgramState, object env.Object, leftVal env.Object, toLeft bool, ...) *env.ProgramState
- func EvalSetword(ps *env.ProgramState, word env.Setword) *env.ProgramState
- func EvalWord(ps *env.ProgramState, word env.Object, leftVal env.Object, toLeft bool, ...) *env.ProgramState
- func Eyr_CallBuiltin(bi env.Builtin, ps *env.ProgramState, arg0_ env.Object, toLeft bool, ...) *env.ProgramState
- func Eyr_EvalBlock(es *env.ProgramState, stack *EyrStack) *env.ProgramState
- func Eyr_EvalExpression(es *env.ProgramState, stack *EyrStack) *env.ProgramState
- func Eyr_EvalObject(es *env.ProgramState, object env.Object, leftVal env.Object, toLeft bool, ...) *env.ProgramState
- func Eyr_EvalWord(es *env.ProgramState, word env.Object, leftVal env.Object, toLeft bool, ...) *env.ProgramState
- func GenerateColumn(ps *env.ProgramState, s env.Spreadsheet, name env.Word, extractCols env.Block, ...) env.Object
- func Limit(ps *env.ProgramState, s env.Spreadsheet, n int) env.Object
- func MakeArgError(env1 *env.ProgramState, N int, typ []env.Type, fn string) *env.Error
- func MakeBuiltinError(env1 *env.ProgramState, msg string, fn string) *env.Error
- func MakeError(env1 *env.ProgramState, msg string) *env.Error
- func MakeRyeError(env1 *env.ProgramState, val env.Object, er *env.Error) *env.Error
- func Math_EvalBlock(es *env.ProgramState) []env.Object
- func MaybeAcceptComma(ps *env.ProgramState, inj env.Object, injnow bool) (*env.ProgramState, bool)
- func MaybeDisplayFailureOrError(es *env.ProgramState, genv *env.Idxs)
- func MaybeEvalOpwordOnRight(nextObj env.Object, ps *env.ProgramState, limited bool) *env.ProgramState
- func MoveCursor(x int, y int)
- func MoveCursorBackward(bias int)
- func MoveCursorDown(bias int)
- func MoveCursorForward(bias int)
- func MoveCursorUp(bias int)
- func PopOutBuffer() string
- func RegisterBuiltins(ps *env.ProgramState)
- func RegisterBuiltins2(builtins map[string]*env.Builtin, ps *env.ProgramState, name string)
- func RyeToJSON(res any) string
- func SortByColumn(ps *env.ProgramState, s *env.Spreadsheet, name string)
- func SortByColumnDesc(ps *env.ProgramState, s *env.Spreadsheet, name string)
- func SpreadsheetToJSON(s env.Spreadsheet) string
- func Stck_CallBuiltin(bi env.Builtin, ps *env.ProgramState, arg0_ env.Object, toLeft bool) *env.ProgramState
- func Stck_EvalBlock(ps *env.ProgramState) *env.ProgramState
- func Stck_EvalExpression(ps *env.ProgramState) *env.ProgramState
- func Stck_EvalObject(ps *env.ProgramState, object env.Object, leftVal env.Object, toLeft bool, ...) *env.ProgramState
- func Stck_EvalWord(ps *env.ProgramState, word env.Object, leftVal env.Object, toLeft bool) *env.ProgramState
- func Validation_EvalBlock(es *env.ProgramState, vals env.Dict) (env.Dict, map[string]env.Object)
- func Validation_EvalBlock_List(es *env.ProgramState, vals env.List) (env.Object, []env.Object)
- func WhereEquals(ps *env.ProgramState, s env.Spreadsheet, name string, val any) env.Object
- func WhereGreater(ps *env.ProgramState, s env.Spreadsheet, name string, val any) env.Object
- func WhereLesser(ps *env.ProgramState, s env.Spreadsheet, name string, val any) env.Object
- type ConversionError
- type EyrStack
- type RyeBlockSort
- type RyeListSort
- type ShellEd
- type ValidationError
Constants ¶
This section is empty.
Variables ¶
var BuiltinNames map[string]int
var Builtins_bcrypt = map[string]*env.Builtin{}
var Builtins_bson = map[string]*env.Builtin{}
var Builtins_conversion = map[string]*env.Builtin{ "convert": { Argsn: 2, Doc: "TODODOC.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return BuiConvert(ps, arg0, arg1) }, }, "converter": { Argsn: 3, Doc: "TODODOC.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch obj1 := arg0.(type) { case env.Kind: switch obj2 := arg1.(type) { case env.Kind: switch spec := arg2.(type) { case env.Block: obj2.SetConverter(obj1.Kind.Index, spec) return obj2 default: return MakeArgError(ps, 3, []env.Type{env.BlockType}, "converter") } default: return MakeArgError(ps, 2, []env.Type{env.KindType, env.BlockType}, "converter") } default: return MakeArgError(ps, 1, []env.Type{env.KindType}, "converter") } }, }, }
var Builtins_crypto = map[string]*env.Builtin{}
var Builtins_email = map[string]*env.Builtin{}
var Builtins_eyr = map[string]*env.Builtin{ "eyr": { Argsn: 1, Doc: "TODODOC.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch bloc := arg0.(type) { case env.Block: stack := NewEyrStack() ser := ps.Ser ps.Ser = bloc.Series Eyr_EvalBlock(ps, stack) ps.Ser = ser return ps.Res default: return MakeArgError(ps, 1, []env.Type{env.BlockType}, "eyr") } }, }, "eyr-loop": { Argsn: 2, Doc: "TODODOC.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch cond := arg0.(type) { case env.Integer: switch bloc := arg1.(type) { case env.Block: ser := ps.Ser ps.Ser = bloc.Series stack := NewEyrStack() for i := 0; int64(i) < cond.Value; i++ { ps = Eyr_EvalBlock(ps, stack) ps.Ser.Reset() } ps.Ser = ser return ps.Res default: return MakeArgError(ps, 2, []env.Type{env.BlockType}, "eyr-loop") } default: return MakeArgError(ps, 1, []env.Type{env.IntegerType}, "eyr-loop") } }, }, }
var Builtins_goroutines = map[string]*env.Builtin{ "sleep": { Argsn: 1, Doc: "Accepts an integer and Sleeps for given number of miliseconds.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch arg := arg0.(type) { case env.Integer: time.Sleep(time.Duration(int(arg.Value)) * time.Millisecond) return arg default: return MakeArgError(ps, 1, []env.Type{env.IntegerType}, "sleep") } }, }, "go-with": { Argsn: 2, Doc: "TODODOC.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch arg := arg0.(type) { case env.Object: switch handler := arg1.(type) { case env.Function: errC := make(chan error) go func() { ps.FailureFlag = false ps.ErrorFlag = false ps.ReturnFlag = false psTemp := env.ProgramState{} err := copier.Copy(&psTemp, &ps) if err != nil { ps.FailureFlag = true ps.ErrorFlag = true ps.ReturnFlag = true errC <- fmt.Errorf("failed to copy ps: %w", err) } close(errC) CallFunction(handler, &psTemp, arg, false, nil) }() if err := <-errC; err != nil { return MakeBuiltinError(ps, err.Error(), "go-with") } return arg0 default: ps.FailureFlag = true return MakeArgError(ps, 2, []env.Type{env.FunctionType}, "go-with") } default: ps.FailureFlag = true return MakeBuiltinError(ps, "First argument should be object type.", "go-with") } }, }, "go": { Argsn: 1, Doc: "TODODOC.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch handler := arg0.(type) { case env.Function: errC := make(chan error) go func() { ps.FailureFlag = false ps.ErrorFlag = false ps.ReturnFlag = false psTemp := env.ProgramState{} err := copier.Copy(&psTemp, &ps) if err != nil { ps.FailureFlag = true ps.ErrorFlag = true ps.ReturnFlag = true errC <- fmt.Errorf("failed to copy ps: %w", err) } close(errC) CallFunction(handler, &psTemp, nil, false, nil) }() if err := <-errC; err != nil { return MakeBuiltinError(ps, err.Error(), "go") } return arg0 default: ps.FailureFlag = true return MakeArgError(ps, 1, []env.Type{env.FunctionType}, "go") } }, }, "new-channel": { Argsn: 1, Doc: "TODODOC.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch buflen := arg0.(type) { case env.Integer: ch := make(chan *env.Object, int(buflen.Value)) return *env.NewNative(ps.Idx, ch, "Rye-channel") default: ps.FailureFlag = true return MakeArgError(ps, 1, []env.Type{env.IntegerType}, "new-channel") } }, }, "Rye-channel//read": { Argsn: 1, Doc: "TODODOC.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch chn := arg0.(type) { case env.Native: msg := <-chn.Value.(chan *env.Object) return *msg default: ps.FailureFlag = true return MakeArgError(ps, 1, []env.Type{env.NativeType}, "Rye-channel//read") } }, }, "Rye-channel//send": { Argsn: 2, Doc: "TODODOC.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch chn := arg0.(type) { case env.Native: chn.Value.(chan *env.Object) <- &arg1 return arg0 default: ps.FailureFlag = true return MakeArgError(ps, 1, []env.Type{env.NativeType}, "Rye-channel//send") } }, }, }
var Builtins_html = map[string]*env.Builtin{}
var Builtins_http = map[string]*env.Builtin{}
var Builtins_io = map[string]*env.Builtin{ "input": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __input(ps, arg0, arg1, arg2, arg3, arg4) }, }, "file-schema//open": { Argsn: 1, Doc: "Open file.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __open(ps, arg0, arg1, arg2, arg3, arg4) }, }, "file-schema//create": { Argsn: 1, Doc: "Create file.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __create(ps, arg0, arg1, arg2, arg3, arg4) }, }, "file-ext?": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch s := arg0.(type) { case env.Uri: path := strings.Split(s.Path, "://") ext := filepath.Ext(path[1]) return *env.NewString(ext) case env.String: ext := filepath.Ext(s.Value) return *env.NewString(ext) default: return MakeArgError(ps, 1, []env.Type{env.UriType, env.StringType}, "file-ext?") } }, }, "reader": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __open_reader(ps, arg0, arg1, arg2, arg3, arg4) }, }, "stdin": { Argsn: 0, Doc: "Standard input.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return *env.NewNative(ps.Idx, os.Stdin, "rye-reader") }, }, "stdout": { Argsn: 0, Doc: "Standard output.", Fn: func(env1 *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return *env.NewNative(env1.Idx, os.Stdout, "rye-writer") }, }, "rye-reader//copy": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __copy(ps, arg0, arg1, arg2, arg3, arg4) }, }, "rye-file//copy": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __copy(ps, arg0, arg1, arg2, arg3, arg4) }, }, "rye-file//stat": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __stat(ps, arg0, arg1, arg2, arg3, arg4) }, }, "file-info//size?": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch s := arg0.(type) { case env.Native: size := s.Value.(os.FileInfo).Size() return *env.NewInteger(size) default: return MakeArgError(ps, 1, []env.Type{env.NativeType}, "file-info//size?") } }, }, "rye-file//read-all": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __read_all(ps, arg0, arg1, arg2, arg3, arg4) }, }, "rye-file//write": { Argsn: 2, Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __write(ps, arg0, arg1, arg2, arg3, arg4) }, }, "rye-file//close": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __close(ps, arg0, arg1, arg2, arg3, arg4) }, }, "file-schema//read": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __fs_read(ps, arg0, arg1, arg2, arg3, arg4) }, }, "file-schema//read\\bytes": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __fs_read_bytes(ps, arg0, arg1, arg2, arg3, arg4) }, }, "file-schema//read\\lines": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __fs_read_lines(ps, arg0, arg1, arg2, arg3, arg4) }, }, "file-schema//write": { Argsn: 2, Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __fs_write(ps, arg0, arg1, arg2, arg3, arg4) }, }, "https-schema//get": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __https_s_get(ps, arg0, arg1, arg2, arg3, arg4) }, }, "https-schema//post": { Argsn: 3, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __http_s_post(ps, arg0, arg1, arg2, arg3, arg4) }, }, "http-schema//get": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __https_s_get(ps, arg0, arg1, arg2, arg3, arg4) }, }, "http-schema//post": { Argsn: 3, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __http_s_post(ps, arg0, arg1, arg2, arg3, arg4) }, }, "https-schema//new-request": { Argsn: 3, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __https_s__new_request(ps, arg0, arg1, arg2, arg3, arg4) }, }, "https-request//set-header": { Argsn: 3, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __https_request__set_header(ps, arg0, arg1, arg2, arg3, arg4) }, }, "https-request//set-basic-auth": { Argsn: 3, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __https_request__set_basic_auth(ps, arg0, arg1, arg2, arg3, arg4) }, }, "https-request//call": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __https_request__do(ps, arg0, arg1, arg2, arg3, arg4) }, }, "https-response//read-body": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __https_response__read_body(ps, arg0, arg1, arg2, arg3, arg4) }, }, "email//send": { Argsn: 2, Doc: "Send email.", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return __email_send(ps, arg0, arg1, arg2, arg3, arg4) }, }, "serve-cgi": { Argsn: 3, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch rword := arg0.(type) { case env.Word: switch wword := arg1.(type) { case env.Word: switch bloc := arg2.(type) { case env.Block: var rctx *env.RyeCtx if err := cgi.Serve(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ser := ps.Ser ctx := ps.Ctx ps.Ser = bloc.Series ps.Ctx = env.NewEnv(ps.Ctx) ps.Ctx.Set(rword.Index, *env.NewNative(ps.Idx, w, "Go-server-response-writer")) ps.Ctx.Set(wword.Index, *env.NewNative(ps.Idx, r, "Go-server-request")) EvalBlock(ps) rctx = ps.Ctx ps.Ctx = ctx ps.Ser = ser })); err != nil { return MakeBuiltinError(ps, err.Error(), "serve-cgi") } return *rctx default: return MakeArgError(ps, 3, []env.Type{env.BlockType}, "serve-cgi") } default: return MakeArgError(ps, 2, []env.Type{env.WordType}, "serve-cgi") } default: return MakeArgError(ps, 1, []env.Type{env.WordType}, "serve-cgi") } }, }, }
var Builtins_json = map[string]*env.Builtin{ "parse-json": { Argsn: 1, Doc: "Parsing JSON values.", Fn: func(es *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return _parse_json(es, arg0, arg1, arg2, arg3, arg4) }, }, "to-json": { Argsn: 1, Doc: "Takes a Rye value and returns it encoded into JSON.", Fn: func(es *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return *env.NewString(RyeToJSON(arg0)) }, }, }
var Builtins_mail = map[string]*env.Builtin{}
var Builtins_math = map[string]*env.Builtin{ "math": { Argsn: 1, Doc: "Math dialect", Fn: func(env1 *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return DialectMath(env1, arg0) }, }, }
var Builtins_mysql = map[string]*env.Builtin{}
var Builtins_ps = map[string]*env.Builtin{}
var Builtins_psql = map[string]*env.Builtin{}
var Builtins_regexp = map[string]*env.Builtin{ "regexp": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch s := arg0.(type) { case env.String: val, err := regexp.Compile(s.Value) if err != nil { return MakeError(ps, err.Error()) } return *env.NewNative(ps.Idx, val, "regexp") default: return MakeArgError(ps, 1, []env.Type{env.StringType}, "regexp") } }, }, "regexp//is-match": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch val := arg1.(type) { case env.String: switch s := arg0.(type) { case env.Native: res := s.Value.(*regexp.Regexp).MatchString(val.Value) if res { return *env.NewInteger(1) } else { return *env.NewInteger(0) } default: return MakeArgError(ps, 1, []env.Type{env.NativeType}, "regexp//matches") } default: return MakeArgError(ps, 2, []env.Type{env.StringType}, "regexp//matches") } }, }, "regexp//submatch?": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch val := arg1.(type) { case env.String: switch s := arg0.(type) { case env.Native: res := s.Value.(*regexp.Regexp).FindStringSubmatch(val.Value) if len(res) > 1 { return *env.NewString(res[1]) } else { return MakeBuiltinError(ps, "No submatch.", "regexp//submatch?") } default: return MakeArgError(ps, 1, []env.Type{env.NativeType}, "regexp//submatch?") } default: return MakeArgError(ps, 2, []env.Type{env.StringType}, "regexp//submatch?") } }, }, "regexp//submatches?": { Argsn: 2, Fn: func(env1 *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch val := arg1.(type) { case env.String: switch s := arg0.(type) { case env.Native: res := s.Value.(*regexp.Regexp).FindStringSubmatch(val.Value) if len(res) > 0 { col1 := make([]env.Object, len(res)-1) for i, row := range res { if i > 0 { col1[i-1] = *env.NewString(row) } } return *env.NewBlock(*env.NewTSeries(col1)) } return MakeBuiltinError(env1, "No results", "submatches?") default: return MakeError(env1, "Arg2 not Native") } default: return MakeError(env1, "Arg1 not String") } }, }, "regexp//find-all": { Argsn: 2, Fn: func(env1 *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch val := arg1.(type) { case env.String: switch s := arg0.(type) { case env.Native: res := s.Value.(*regexp.Regexp).FindAllString(val.Value, -1) if len(res) > 0 { col1 := make([]env.Object, len(res)) for i, row := range res { col1[i] = *env.NewString(row) } return *env.NewBlock(*env.NewTSeries(col1)) } return MakeBuiltinError(env1, "No results", "submatches?") default: return MakeError(env1, "Arg2 not Native") } default: return MakeError(env1, "Arg1 not String") } }, }, "regexp//match?": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch val := arg1.(type) { case env.String: switch s := arg0.(type) { case env.Native: res := s.Value.(*regexp.Regexp).FindString(val.Value) return *env.NewString(res) default: return MakeArgError(ps, 1, []env.Type{env.NativeType}, "regexp//match?") } default: return MakeArgError(ps, 2, []env.Type{env.StringType}, "regexp//match?") } }, }, "regexp//replace-all": { Argsn: 3, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch re := arg0.(type) { case env.Native: switch val := arg1.(type) { case env.String: switch replac := arg2.(type) { case env.String: res := re.Value.(*regexp.Regexp).ReplaceAllString(val.Value, replac.Value) return *env.NewString(res) default: return MakeArgError(ps, 3, []env.Type{env.StringType}, "regexp//replace-all") } default: return MakeArgError(ps, 2, []env.Type{env.StringType}, "regexp//replace-all") } default: return MakeArgError(ps, 1, []env.Type{env.NativeType}, "regexp//replace-all") } }, }, }
var Builtins_smtpd = map[string]*env.Builtin{}
var Builtins_spreadsheet = map[string]*env.Builtin{ "spreadsheet": { Argsn: 2, Doc: "Create a spreadsheet by accepting block of column names and flat block of values", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch header1 := arg0.(type) { case env.Block: switch data1 := arg1.(type) { case env.Block: header := header1.Series cols := make([]string, header.Len()) for header.Pos() < header.Len() { i := header.Pos() k1 := header.Pop() switch k := k1.(type) { case env.String: cols[i] = k.Value } } spr := env.NewSpreadsheet(cols) data := data1.Series for data.Pos() < data.Len() { rowd := make([]any, header.Len()) for ii := 0; ii < header.Len(); ii++ { k1 := data.Pop() rowd[ii] = k1 } spr.AddRow(*env.NewSpreadsheetRow(rowd, spr)) } return *spr default: return MakeArgError(ps, 2, []env.Type{env.BlockType}, "spreadsheet") } default: return MakeArgError(ps, 1, []env.Type{env.BlockType}, "spreadsheet") } }, }, "to-spreadsheet": { Argsn: 1, Doc: "Create a spreadsheet by accepting block of dicts", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) (res env.Object) { switch block := arg0.(type) { case env.Block: data := block.Series if data.Len() == 0 { return MakeBuiltinError(ps, "Block is empty", "to-spreadsheet") } k := make(map[string]struct{}) for _, obj := range data.S { switch dict := obj.(type) { case env.Dict: for key := range dict.Data { k[key] = struct{}{} } default: return MakeBuiltinError(ps, "Block must contain only dicts", "to-spreadsheet") } } var keys []string for key := range k { keys = append(keys, key) } spr := env.NewSpreadsheet(keys) for _, obj := range data.S { switch dict := obj.(type) { case env.Dict: row := make([]any, len(keys)) for i, key := range keys { data, ok := dict.Data[key] if !ok { data = env.Void{} } row[i] = data } spr.AddRow(*env.NewSpreadsheetRow(row, spr)) } } return *spr default: return MakeArgError(ps, 1, []env.Type{env.BlockType}, "to-spreadsheet") } }, }, "get-rows": { Argsn: 1, Doc: "Create a spreadsheet by accepting block of column names and flat block of values", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: rows := spr.GetRows() return *env.NewNative(ps.Idx, rows, "spreadsheet-rows") default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "get-rows") } }, }, "add-rows": { Argsn: 2, Doc: "Create a spreadsheet by accepting block of column names and flat block of values", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: switch data1 := arg1.(type) { case env.Block: data := data1.Series for data.Pos() < data.Len() { rowd := make([]any, len(spr.Cols)) for ii := 0; ii < len(spr.Cols); ii++ { k1 := data.Pop() rowd[ii] = k1 } spr.AddRow(*env.NewSpreadsheetRow(rowd, &spr)) } return spr case env.Native: spr.Rows = append(spr.Rows, data1.Value.([]env.SpreadsheetRow)...) return spr default: return MakeArgError(ps, 2, []env.Type{env.BlockType, env.NativeType}, "add-rows") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "add-rows") } }, }, "load\\csv": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch file := arg0.(type) { case env.Uri: f, err := os.Open(file.GetPath()) if err != nil { return MakeBuiltinError(ps, "Unable to read input file.", "load\\csv") } defer f.Close() csvReader := csv.NewReader(f) rows, err := csvReader.ReadAll() if err != nil { return MakeBuiltinError(ps, "Unable to parse file as CSV.", "load\\csv") } spr := env.NewSpreadsheet(rows[0]) if len(rows) > 1 { for _, row := range rows[1:] { anyRow := make([]any, len(row)) for i, v := range row { anyRow[i] = *env.NewString(v) } spr.AddRow(*env.NewSpreadsheetRow(anyRow, spr)) } } return *spr default: return MakeArgError(ps, 1, []env.Type{env.UriType}, "load\\csv") } }, }, "where-equal": { Argsn: 3, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: switch col := arg1.(type) { case env.Word: return WhereEquals(ps, spr, ps.Idx.GetWord(col.Index), arg2) case env.String: return WhereEquals(ps, spr, col.Value, arg2) default: return MakeArgError(ps, 2, []env.Type{env.WordType}, "where-equal") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "where-equal") } }, }, "where-greater": { Argsn: 3, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: switch col := arg1.(type) { case env.Word: return WhereGreater(ps, spr, ps.Idx.GetWord(col.Index), arg2) case env.String: return WhereGreater(ps, spr, col.Value, arg2) default: return MakeArgError(ps, 2, []env.Type{env.WordType}, "where-greater") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "where-greater") } }, }, "where-lesser": { Argsn: 3, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: switch col := arg1.(type) { case env.Word: return WhereLesser(ps, spr, ps.Idx.GetWord(col.Index), arg2) case env.String: return WhereLesser(ps, spr, col.Value, arg2) default: return MakeArgError(ps, 2, []env.Type{env.WordType}, "where-lesser") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "where-lesser") } }, }, "limit": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: switch n := arg1.(type) { case env.Integer: return Limit(ps, spr, int(n.Value)) default: return MakeArgError(ps, 1, []env.Type{env.IntegerType}, "limit") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "limit") } }, }, "sort-col!": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: switch col := arg1.(type) { case env.Word: SortByColumn(ps, &spr, ps.Idx.GetWord(col.Index)) return spr default: return MakeArgError(ps, 2, []env.Type{env.WordType}, "sort-col!") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "sort-col!") } }, }, "sort-col\\desc!": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: switch col := arg1.(type) { case env.Word: SortByColumnDesc(ps, &spr, ps.Idx.GetWord(col.Index)) return spr default: return MakeArgError(ps, 2, []env.Type{env.WordType}, "sort-col\\desc!") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "sort-col\\desc!") } }, }, "columns": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: switch col := arg1.(type) { case env.Block: cols := make([]string, col.Series.Len()) for c := range col.Series.S { switch ww := col.Series.S[c].(type) { case env.String: cols[c] = ww.Value case env.Tagword: cols[c] = ps.Idx.GetWord(ww.Index) } } return spr.Columns(ps, cols) default: return MakeArgError(ps, 1, []env.Type{env.BlockType}, "columns") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "columns") } }, }, "columns?": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: return spr.GetColumns() default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "columns?") } }, }, "column?": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) (res env.Object) { switch spr := arg0.(type) { case env.Spreadsheet: switch col := arg1.(type) { case env.Word: return spr.Column(ps.Idx.GetWord(col.Index)) case env.String: return spr.Column(col.Value) default: return MakeArgError(ps, 2, []env.Type{env.WordType, env.StringType}, "column?") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "column?") } }, }, "add-col!": { Argsn: 4, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: switch name := arg1.(type) { case env.Word: switch extract := arg2.(type) { case env.Block: switch code := arg3.(type) { case env.Block: return GenerateColumn(ps, spr, name, extract, code) default: return MakeArgError(ps, 4, []env.Type{env.BlockType}, "add-col!") } default: return MakeArgError(ps, 3, []env.Type{env.BlockType}, "add-col!") } default: return MakeArgError(ps, 2, []env.Type{env.WordType}, "add-col!") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "add-col!") } }, }, "add-index!": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch spr := arg0.(type) { case env.Spreadsheet: switch col := arg1.(type) { case env.Block: colWords := make([]env.Word, col.Series.Len()) for c := range col.Series.S { switch ww := col.Series.S[c].(type) { case env.Word: colWords[c] = ww default: return MakeError(ps, "Block of tagwords needed") } } res := AddIndexes(ps, &spr, colWords) if res != nil { return res } return spr default: return MakeArgError(ps, 2, []env.Type{env.BlockType}, "add-index!") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "add-index!") } }, }, "autotype": { Argsn: 2, Doc: "", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) (res env.Object) { switch spr := arg0.(type) { case env.Spreadsheet: switch percent := arg1.(type) { case env.Decimal: return AutoType(ps, &spr, percent.Value) default: return MakeArgError(ps, 2, []env.Type{env.DecimalType}, "autotype") } default: return MakeArgError(ps, 1, []env.Type{env.SpreadsheetType}, "autotype") } }, }, }
var Builtins_sqlite = map[string]*env.Builtin{}
var Builtins_stackless = map[string]*env.Builtin{ "ry0": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch bloc := arg0.(type) { case env.Block: ser := ps.Ser ps.Ser = bloc.Series Stck_EvalBlock(ps) ps.Ser = ser return ps.Res default: return MakeArgError(ps, 1, []env.Type{env.BlockType}, "ry0") } }, }, "ry0-loop": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch cond := arg0.(type) { case env.Integer: switch bloc := arg1.(type) { case env.Block: ser := ps.Ser ps.Ser = bloc.Series for i := 0; int64(i) < cond.Value; i++ { ps = Stck_EvalBlock(ps) ps.Ser.Reset() } ps.Ser = ser return ps.Res default: return MakeArgError(ps, 1, []env.Type{env.BlockType}, "ry0-loop") } default: return MakeArgError(ps, 1, []env.Type{env.IntegerType}, "ry0-loop") } }, }, }
var Builtins_structures = map[string]*env.Builtin{ "process": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { rm, err := load_structures_Dict(ps, arg1.(env.Block)) if err != nil { ps.FailureFlag = true return err } switch data := arg0.(type) { case env.Dict: return do_structures(ps, data, rm) } return nil }, }, }
var Builtins_sxml = map[string]*env.Builtin{}
var Builtins_telegrambot = map[string]*env.Builtin{}
var Builtins_validation = map[string]*env.Builtin{ "validate": { Argsn: 2, Doc: "Validates Dictionary using the Validation dialect and returns result or a Failure.", Fn: func(env1 *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { return BuiValidate(env1, arg0, arg1) }, }, "validate>ctx": { Argsn: 2, Doc: "Validates Dictionary using the Validation dialect and returns result as a Context or a Failure.", Fn: func(env1 *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { obj := BuiValidate(env1, arg0, arg1) switch obj1 := obj.(type) { case env.Dict: return util.Dict2Context(env1, obj1) default: return obj1 } }, }, }
var Builtins_vector = map[string]*env.Builtin{ "vector": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch s := arg0.(type) { case env.Block: data := ArrayFloat32FromSeries(s.Series) val, err := govector.AsVector(data) if err != nil { return MakeError(ps, err.Error()) } return *env.NewVector(val) default: return MakeArgError(ps, 1, []env.Type{env.BlockType}, "vector") } }, }, "norm": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch val := arg0.(type) { case env.Vector: return *env.NewDecimal(govector.Norm(val.Value, 2.0)) default: return MakeArgError(ps, 1, []env.Type{env.VectorType}, "norm") } }, }, "std-deviation": { Argsn: 1, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch val := arg0.(type) { case env.Vector: return *env.NewDecimal(val.Value.Sd()) default: return MakeArgError(ps, 1, []env.Type{env.VectorType}, "std-deviation") } }, }, "cosine-similarity": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch v1 := arg0.(type) { case env.Vector: switch v2 := arg1.(type) { case env.Vector: res, err := govector.Cosine(v1.Value, v2.Value) if err != nil { return MakeBuiltinError(ps, err.Error(), "cosine-similarity") } return *env.NewDecimal(res) default: return MakeArgError(ps, 2, []env.Type{env.VectorType}, "cosine-similarity") } default: return MakeArgError(ps, 1, []env.Type{env.VectorType}, "cosine-similarity") } }, }, "correlation": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch v1 := arg0.(type) { case env.Vector: switch v2 := arg1.(type) { case env.Vector: res, err := govector.Cor(v1.Value, v2.Value) if err != nil { return MakeError(ps, err.Error()) } return *env.NewDecimal(res) default: return MakeArgError(ps, 2, []env.Type{env.VectorType}, "correlation") } default: return MakeArgError(ps, 1, []env.Type{env.VectorType}, "correlation") } }, }, "dot-product": { Argsn: 2, Doc: "TODODOC", Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object { switch v1 := arg0.(type) { case env.Vector: switch v2 := arg1.(type) { case env.Vector: res, err := govector.DotProduct(v1.Value, v2.Value) if err != nil { return MakeError(ps, err.Error()) } return *env.NewDecimal(res) default: return MakeArgError(ps, 2, []env.Type{env.VectorType}, "dot-product") } default: return MakeArgError(ps, 1, []env.Type{env.VectorType}, "dot-product") } }, }, }
var Builtins_web = map[string]*env.Builtin{}
var Builtins_webview = map[string]*env.Builtin{}
var OutBuffer = "" // how does this work with multiple threads / ... in server use ... probably we would need some per environment variable, not global / global?
var ShowResults bool
Functions ¶
func AddIndexes ¶
func AddIndexes(ps *env.ProgramState, s *env.Spreadsheet, columns []env.Word) env.Object
func ArrayFloat32FromSeries ¶
func AutoType ¶
func AutoType(ps *env.ProgramState, s *env.Spreadsheet, percent float64) env.Object
func BuiConvert ¶
func BuiValidate ¶
func CallBuiltin ¶
func CallFunction ¶
func CallFunctionArgs2 ¶
func CallFunctionArgs4 ¶
func Conversion_EvalBlockCtx ¶
func DialectMath ¶ added in v0.0.11
func DirectlyCallBuiltin ¶
func DoGeneralInput ¶
func DoGeneralInput(es *env.ProgramState, prompt string)
func DoGeneralInputField ¶
func DoGeneralInputField(es *env.ProgramState, prompt string)
func DoRyeRepl ¶
func DoRyeRepl(es *env.ProgramState, showResults bool)
func EvalBlock ¶
func EvalBlock(ps *env.ProgramState) *env.ProgramState
DESCR: the most general EvalBlock
func EvalBlockInCtx ¶
func EvalBlockInCtx(ps *env.ProgramState, ctx *env.RyeCtx) *env.ProgramState
DESCR: eval a block in specific context
func EvalBlockInCtxInj ¶
func EvalBlockInCtxInj(ps *env.ProgramState, ctx *env.RyeCtx, inj env.Object, injnow bool) *env.ProgramState
DESCR: eval a block in specific context
func EvalBlockInj ¶
func EvalBlockInj(ps *env.ProgramState, inj env.Object, injnow bool) *env.ProgramState
DESCR: the main evaluator of block
func EvalExpression2 ¶
func EvalExpression2(ps *env.ProgramState, limited bool) *env.ProgramState
this functions is used to evaluate expression in the middle of block currently it's called to collect arguments for builtins and functions
func EvalExpressionConcrete ¶
func EvalExpressionConcrete(ps *env.ProgramState) *env.ProgramState
the main part of evaluator, if it were a polish only we would need almost only this switches over all rye values and acts on them
func EvalExpressionInj ¶
func EvalExpressionInj(ps *env.ProgramState, inj env.Object, injnow bool) (*env.ProgramState, bool)
I don't fully get this function in this review ... it's this way so it handles op and pipe words mainly, but I need to get deeper again to write a proper explanation TODO -- return to this and explain
func EvalExpressionInjLimited ¶
func EvalExpressionInjLimited(ps *env.ProgramState, inj env.Object, injnow bool) (*env.ProgramState, bool)
REFATOR THIS WITH CODE ABOVE when seeing bigger picture, just adding fow eval-with
func EvalGenword ¶
func EvalGenword(ps *env.ProgramState, word env.Genword, leftVal env.Object, toLeft bool) *env.ProgramState
if word is defined to be generic ... I am not sure we will keep this ... we will decide with more use then if explicitly treats it as generic word
func EvalGetword ¶
func EvalGetword(ps *env.ProgramState, word env.Getword, leftVal env.Object, toLeft bool) *env.ProgramState
evaluates a get-word . it retrieves rye value behid it w/o evaluation
func EvalObject ¶
func EvalObject(ps *env.ProgramState, object env.Object, leftVal env.Object, toLeft bool, ctx *env.RyeCtx, pipeSecond bool, firstVal env.Object) *env.ProgramState
evaluates a rye value, most of them just get returned, except builtins, functions and context paths
func EvalSetword ¶
func EvalSetword(ps *env.ProgramState, word env.Setword) *env.ProgramState
evaluates expression to the right and sets the result of it to a word in current context
func EvalWord ¶
func EvalWord(ps *env.ProgramState, word env.Object, leftVal env.Object, toLeft bool, pipeSecond bool) *env.ProgramState
Evaluates a word first tries to find a value in normal context. If there were no generic words this would be mostly it if word is not found then it tries to get the value of next expression and find a generic word based on that, it here is leftval already present it can dispatc on it otherwise
func Eyr_CallBuiltin ¶
func Eyr_CallBuiltin(bi env.Builtin, ps *env.ProgramState, arg0_ env.Object, toLeft bool, stack *EyrStack) *env.ProgramState
func Eyr_EvalBlock ¶
func Eyr_EvalBlock(es *env.ProgramState, stack *EyrStack) *env.ProgramState
func Eyr_EvalExpression ¶
func Eyr_EvalExpression(es *env.ProgramState, stack *EyrStack) *env.ProgramState
func Eyr_EvalObject ¶
func Eyr_EvalWord ¶
func Eyr_EvalWord(es *env.ProgramState, word env.Object, leftVal env.Object, toLeft bool, stack *EyrStack) *env.ProgramState
func GenerateColumn ¶
func Limit ¶
func Limit(ps *env.ProgramState, s env.Spreadsheet, n int) env.Object
func MakeArgError ¶
func MakeBuiltinError ¶
func MakeRyeError ¶
func Math_EvalBlock ¶ added in v0.0.11
func Math_EvalBlock(es *env.ProgramState) []env.Object
func MaybeAcceptComma ¶
func MaybeAcceptComma(ps *env.ProgramState, inj env.Object, injnow bool) (*env.ProgramState, bool)
comma (expression guard) can be present between block-level expressions, in case of injected block they reinject the value
func MaybeDisplayFailureOrError ¶
func MaybeDisplayFailureOrError(es *env.ProgramState, genv *env.Idxs)
func MaybeEvalOpwordOnRight ¶
func MaybeEvalOpwordOnRight(nextObj env.Object, ps *env.ProgramState, limited bool) *env.ProgramState
this function get's the next object (unevaluated), progra state, limited bool (op or pipe) first if there is return flag it returns (not sure if this is necesarry here) TODO -- figure out if next object is opword it steps to next and evaluates the word then recurse to maybe again if next object is pipeword
on limited return (what is limited exactly ? TODO) step to next word and evaluate it again check for return flag check for failure flag and cwitch to error ... doesn't one of checkFlags do this or similar? .TODO recurse again
if next is lsetword
set the value to word and recurse
func MoveCursorBackward ¶
func MoveCursorBackward(bias int)
Move cursor backward relative the current position
func MoveCursorForward ¶
func MoveCursorForward(bias int)
Move cursor forward relative the current position
func PopOutBuffer ¶
func PopOutBuffer() string
func RegisterBuiltins ¶
func RegisterBuiltins(ps *env.ProgramState)
func RegisterBuiltins2 ¶
func SortByColumn ¶
func SortByColumn(ps *env.ProgramState, s *env.Spreadsheet, name string)
func SortByColumnDesc ¶
func SortByColumnDesc(ps *env.ProgramState, s *env.Spreadsheet, name string)
func SpreadsheetToJSON ¶
func SpreadsheetToJSON(s env.Spreadsheet) string
Inspect returns a string representation of the Integer.
func Stck_CallBuiltin ¶
func Stck_CallBuiltin(bi env.Builtin, ps *env.ProgramState, arg0_ env.Object, toLeft bool) *env.ProgramState
func Stck_EvalBlock ¶
func Stck_EvalBlock(ps *env.ProgramState) *env.ProgramState
func Stck_EvalExpression ¶
func Stck_EvalExpression(ps *env.ProgramState) *env.ProgramState
func Stck_EvalObject ¶
func Stck_EvalWord ¶
func Stck_EvalWord(ps *env.ProgramState, word env.Object, leftVal env.Object, toLeft bool) *env.ProgramState
func Validation_EvalBlock ¶
func WhereEquals ¶
func WhereEquals(ps *env.ProgramState, s env.Spreadsheet, name string, val any) env.Object
func WhereGreater ¶
func WhereGreater(ps *env.ProgramState, s env.Spreadsheet, name string, val any) env.Object
func WhereLesser ¶
func WhereLesser(ps *env.ProgramState, s env.Spreadsheet, name string, val any) env.Object
Types ¶
type ConversionError ¶
type ConversionError struct {
// contains filtered or unexported fields
}
Integer represents an integer.
type EyrStack ¶
func NewEyrStack ¶
func NewEyrStack() *EyrStack
type RyeBlockSort ¶
Sort object interface
func (RyeBlockSort) Len ¶
func (s RyeBlockSort) Len() int
func (RyeBlockSort) Less ¶
func (s RyeBlockSort) Less(i, j int) bool
func (RyeBlockSort) Swap ¶
func (s RyeBlockSort) Swap(i, j int)
type RyeListSort ¶
type RyeListSort []any
Sort list interface
func (RyeListSort) Len ¶
func (s RyeListSort) Len() int
func (RyeListSort) Less ¶
func (s RyeListSort) Less(i, j int) bool
func (RyeListSort) Swap ¶
func (s RyeListSort) Swap(i, j int)
type ValidationError ¶
type ValidationError struct {
// contains filtered or unexported fields
}
Integer represents an integer.
Source Files ¶
- builtins.go
- builtins_bcrypt_not.go
- builtins_bson_not.go
- builtins_conversion.go
- builtins_crypto_not.go
- builtins_email_not.go
- builtins_eyr.go
- builtins_goroutines.go
- builtins_html_not.go
- builtins_http_not.go
- builtins_io.go
- builtins_json.go
- builtins_mail_not.go
- builtins_math.go
- builtins_mysql_not.go
- builtins_psql_not.go
- builtins_psutil_not.go
- builtins_regexp.go
- builtins_smtpd_not.go
- builtins_spreadsheet.go
- builtins_sqlite_not.go
- builtins_stackless.go
- builtins_structures.go
- builtins_sxml_not.go
- builtins_telegrambot_not.go
- builtins_validation.go
- builtins_vector.go
- builtins_web_not.go
- builtins_webview_not.go
- evaldo.go
- generic.go
- repl.go