Esempio n. 1
0
                    public object Call(Interpreter interpreter, Token token, List <object> arguments)
                    {
                        ScriptFunction callback = (ScriptFunction)arguments[0];

                        if (callback.Arity() != 1)
                        {
                            throw new ErrorHandler.RuntimeError(token, "Callback has an incorrect number of parameters (expected 1, found " + callback.Arity() + ")");
                        }

                        foreach (object element in self.container)
                        {
                            callback.Call(interpreter, token, new List <object>()
                            {
                                element
                            });
                        }

                        return(null);
                    }
Esempio n. 2
0
                    public object Call(Interpreter interpreter, Token token, List arguments)
                    {
                        ScriptFunction callback = (ScriptFunction)arguments[0];

                        if (callback.Arity() != 2)
                        {
                            throw new ErrorHandler.RuntimeError(token, "Callback has an incorrect number of parameters (expected 2, found " + callback.Arity() + ")");
                        }

                        foreach (Pair kvp in self.container)
                        {
                            callback.Call(interpreter, token, new List()
                            {
                                kvp.Key, kvp.Value
                            });
                        }

                        return(null);
                    }
Esempio n. 3
0
                    public object Call(Interpreter interpreter, Token token, List <object> arguments)
                    {
                        ScriptFunction callback         = (ScriptFunction)arguments[0];
                        List <object>  resultsContainer = new List <object>();

                        if (callback.Arity() != 1)
                        {
                            throw new ErrorHandler.RuntimeError(token, "Callback has an incorrect number of parameters (expected 1, found " + callback.Arity() + ")");
                        }

                        foreach (object element in self.container)
                        {
                            object result = callback.Call(interpreter, token, new List <object>()
                            {
                                element
                            });
                            if (interpreter.CheckIsTruthy(result))
                            {
                                resultsContainer.Add(element);
                            }
                        }

                        return(new ArrayInstance(resultsContainer));
                    }
Esempio n. 4
0
                    public object Call(Interpreter interpreter, Token token, List arguments)
                    {
                        ScriptFunction callback         = (ScriptFunction)arguments[0];
                        Dict           resultsContainer = new Dict();

                        if (callback.Arity() != 2)
                        {
                            throw new ErrorHandler.RuntimeError(token, "Callback has an incorrect number of parameters (expected 2, found " + callback.Arity() + ")");
                        }

                        foreach (Pair kvp in self.container)
                        {
                            object result = callback.Call(interpreter, token, new List()
                            {
                                kvp.Key, kvp.Value
                            });
                            if (interpreter.CheckIsTruthy(result))
                            {
                                resultsContainer[kvp.Key] = kvp.Value;
                            }
                        }

                        return(new DictionaryInstance(resultsContainer));
                    }