コード例 #1
0
        public static string[] GetFunctionParameters(int position, ITextSnapshot capture)
        {
            int openFunctionLine = capture.GetLineNumberFromPosition(position - 1) + 1;
            var prevLine         = capture.GetLineFromLineNumber(openFunctionLine).GetText();

            int firstParenPosition = capture.GetLineFromLineNumber(openFunctionLine).Start
                                     + prevLine.IndexOf('(')
                                     + 1;


            int lastParenPosition = -1;

            if (prevLine.IndexOf(')') > 0)
            {
                lastParenPosition = capture.GetLineFromLineNumber(openFunctionLine).Start + prevLine.IndexOf(')', prevLine.IndexOf('('));
            }
            else
            {
                do
                {
                    openFunctionLine++;
                    prevLine = capture.GetLineFromLineNumber(openFunctionLine).GetText();
                } while (!prevLine.Contains(")"));

                lastParenPosition = capture.GetLineFromLineNumber(openFunctionLine).Start + prevLine.IndexOf(")");
            }


            return(StubUtils
                   .RemoveComments(capture
                                   .GetText()
                                   .Substring(firstParenPosition, (lastParenPosition - firstParenPosition)))
                   .Split(',')
                   .Select(param => param.Trim())
                   .ToArray());
        }