getBlocksForFileName() public method

public getBlocksForFileName ( string fileName ) : List
fileName string
return List
        /**
         * Determines if a block contains the given point, and is fo returns the
         * CommentBlock and MatchedBlockData for the match.
         */
        public static bool GetBlockContainingPoint(
            ParameterSet pset,
            string fileName,
            EnvDTE.TextPoint pt,
            out CommentBlock retblock,
            out MatchedBlockData bdata)
        {
            retblock = null;
            bdata = new MatchedBlockData();
            bdata.mEndLine = 0;
            bdata.mStartLine = 0;
            bdata.mIndentation = 0;

            EnvDTE.EditPoint ep = pt.CreateEditPoint();
            EnvDTE.EditPoint enddoc = pt.CreateEditPoint();
            enddoc.EndOfDocument();
            string line = GetUntabbedLine(enddoc,ep.Line);

            foreach (CommentBlock block in pset.getBlocksForFileName(fileName))
            {
                if (block.lineHasBlockPattern(line,out bdata.mIndentation))
                {
                    int currentLineNumber = ep.Line;
                    // scan up for block start
                    bool foundStart = false;
                    for ( ;currentLineNumber >= 1; currentLineNumber--)
                    {
                        string currentLine = GetUntabbedLine(enddoc, currentLineNumber);
                        string previousLine = GetUntabbedLine(enddoc, currentLineNumber-1);
                        string nextLine = GetUntabbedLine(enddoc, currentLineNumber+1);
                        if (block.lineIsStartOfBlock(currentLine,
                                                     previousLine,
                                                     bdata.mIndentation,
                                                     out bdata.mMatchedBlockStart,
                                                     out bdata.mSpacesTrimmedOffBlockStart))
                        {
                            bdata.mStartLine = currentLineNumber;
                            foundStart = true;
                            break;
                        }
                        else if (!block.lineIsBlockContinuation(currentLine,bdata.mIndentation) &&
                                 !block.lineIsEndOfBlock(currentLine,nextLine,bdata.mIndentation,out bdata.mMatchedBlockEnd))
                        {
                            break;
                        }
                    }
                    if (foundStart)
                    {
                        bool foundEnd = false;
                        for ( ; currentLineNumber <= enddoc.Line ; currentLineNumber++)
                        {
                            string currentLine = GetUntabbedLine(enddoc, currentLineNumber);
                            string nextLine = GetUntabbedLine(enddoc, currentLineNumber+1);
                            if (block.lineIsEndOfBlock(currentLine, nextLine,bdata.mIndentation,out bdata.mMatchedBlockEnd))
                            {
                                bdata.mEndLine = currentLineNumber;
                                foundEnd = true;
                                break;
                            }
                            else if ((currentLineNumber != bdata.mStartLine) &&
                                (!block.lineIsBlockContinuation(currentLine,bdata.mIndentation)))
                            {
                                break;
                            }
                        }
                        if (foundEnd)
                        {
                            retblock = block;
                            return true;
                        }
                        // else try next block
                    }
                    // else try next block
                }
            }
            return false;
        }
        /**
         * Determines if a block contains the given point, and is fo returns the
         * CommentBlock and MatchedBlockData for the match.
         */
        static public bool GetBlockContainingPoint(
            ParameterSet pset,
            string fileName,
            EnvDTE.TextPoint pt,
            out CommentBlock retblock,
            out MatchedBlockData bdata)
        {
            retblock           = null;
            bdata              = new MatchedBlockData();
            bdata.mEndLine     = 0;
            bdata.mStartLine   = 0;
            bdata.mIndentation = 0;

            EnvDTE.EditPoint ep     = pt.CreateEditPoint();
            EnvDTE.EditPoint enddoc = pt.CreateEditPoint();
            enddoc.EndOfDocument();
            string line = GetUntabbedLine(enddoc, ep.Line);

            foreach (CommentBlock block in pset.getBlocksForFileName(fileName))
            {
                if (block.lineHasBlockPattern(line, out bdata.mIndentation))
                {
                    int currentLineNumber = ep.Line;
                    // scan up for block start
                    bool foundStart = false;
                    for ( ; currentLineNumber >= 1; currentLineNumber--)
                    {
                        string currentLine  = GetUntabbedLine(enddoc, currentLineNumber);
                        string previousLine = GetUntabbedLine(enddoc, currentLineNumber - 1);
                        string nextLine     = GetUntabbedLine(enddoc, currentLineNumber + 1);
                        if (block.lineIsStartOfBlock(currentLine,
                                                     previousLine,
                                                     bdata.mIndentation,
                                                     out bdata.mMatchedBlockStart,
                                                     out bdata.mSpacesTrimmedOffBlockStart))
                        {
                            bdata.mStartLine = currentLineNumber;
                            foundStart       = true;
                            break;
                        }
                        else if (!block.lineIsBlockContinuation(currentLine, bdata.mIndentation) &&
                                 !block.lineIsEndOfBlock(currentLine, nextLine, bdata.mIndentation, out bdata.mMatchedBlockEnd))
                        {
                            break;
                        }
                    }
                    if (foundStart)
                    {
                        bool foundEnd = false;
                        for ( ; currentLineNumber <= enddoc.Line; currentLineNumber++)
                        {
                            string currentLine = GetUntabbedLine(enddoc, currentLineNumber);
                            string nextLine    = GetUntabbedLine(enddoc, currentLineNumber + 1);
                            if (block.lineIsEndOfBlock(currentLine, nextLine, bdata.mIndentation, out bdata.mMatchedBlockEnd))
                            {
                                bdata.mEndLine = currentLineNumber;
                                foundEnd       = true;
                                break;
                            }
                            else if ((currentLineNumber != bdata.mStartLine) &&
                                     (!block.lineIsBlockContinuation(currentLine, bdata.mIndentation)))
                            {
                                break;
                            }
                        }
                        if (foundEnd)
                        {
                            retblock = block;
                            return(true);
                        }
                        // else try next block
                    }
                    // else try next block
                }
            }
            return(false);
        }