YAMP.FatArrowOperator.Handle C# (CSharp) Method

Handle() public method

public Handle ( Expression left, Expression right, Value>.IDictionary symbols ) : Value
left Expression
right Expression
symbols Value>.IDictionary
return Value
        public override Value Handle(Expression left, Expression right, IDictionary<String, Value> symbols)
        {
            var args = default(String[]);

            if (left is SymbolExpression)
            {
                args = new[] { ((SymbolExpression)left).SymbolName };
            }
            else if (left is BracketExpression)
            {
                var bracket = (BracketExpression)left;

                if (bracket.HasContent)
                {
                    if (bracket.IsSymbolList)
                    {
                        var expressions = bracket.GetSymbols().ToArray();
                        args = new String[expressions.Length];

                        for (var i = 0; i != args.Length; i++)
                        {
                            args[i] = expressions[i].SymbolName;
                        }
                    }
                    else
                    {
                        throw new YAMPWrongTypeSuppliedException("a list of symbols");
                    }
                }
                else
                {
                    args = new String[0];
                }
            }
            else
            {
                throw new YAMPWrongTypeSuppliedException("a symbol or a list of symbols contained in round brackets");
            }

            return new FunctionValue(args, right);
        }