IronRuby.Runtime.Calls.RubyMethodInfo.GetRubyParameterArray C# (CSharp) Method

GetRubyParameterArray() public method

public GetRubyParameterArray ( ) : RubyArray
return RubyArray
        public override RubyArray/*!*/ GetRubyParameterArray() {
            var context = _declaringScope.RubyContext;
            var reqSymbol = context.CreateAsciiSymbol("req");
            var optSymbol = context.CreateAsciiSymbol("opt");
            var ps =_body.Ast.Parameters;

            RubyArray result = new RubyArray();
            for (int i = 0; i < ps.LeadingMandatoryCount; i++) {
                result.Add(new RubyArray { reqSymbol, context.EncodeIdentifier(((LocalVariable)ps.Mandatory[i]).Name) });
            }

            foreach (var p in ps.Optional) {
                result.Add(new RubyArray { optSymbol, context.EncodeIdentifier(((LocalVariable)p.Left).Name) });
            }

            if (ps.Unsplat != null) {
                result.Add(new RubyArray { context.CreateAsciiSymbol("rest"), context.EncodeIdentifier(((LocalVariable)ps.Unsplat).Name) });
            }

            for (int i = ps.LeadingMandatoryCount; i < ps.Mandatory.Length; i++) {
                result.Add(new RubyArray { reqSymbol, context.EncodeIdentifier(((LocalVariable)ps.Mandatory[i]).Name) });
            }

            if (ps.Block != null) {
                result.Add(new RubyArray { context.CreateAsciiSymbol("block"), context.EncodeIdentifier(ps.Block.Name) });
            }

            return result;
        }