コード例 #1
0
        private static string ExtractFileText(FullPath filepath, FilePositionSpan filePositionSpan)
        {
            var path = filepath.Value;

            if (!File.Exists(path))
            {
                return(string.Format("File not found: {0}", path));
            }
            var text   = File.ReadAllText(path);
            var offset = filePositionSpan.Position;
            var length = Math.Min(80, filePositionSpan.Length);

            if (offset < 0)
            {
                return("<Invalid offset>");
            }
            if (length < 0)
            {
                return("<Invalid length>");
            }
            if (offset + length > text.Length)
            {
                return("<Invalid span>");
            }
            var extract = text.Substring(offset, length);

            return(extract);
        }
コード例 #2
0
        public FileExtract FilePositionSpanToFileExtract(FilePositionSpan filePositionSpan, int maxTextExtent)
        {
            maxTextExtent = Math.Max(maxTextExtent, filePositionSpan.Length);

            var spanStart = filePositionSpan.Position;
            var spanEnd   = spanStart + filePositionSpan.Length;

            var lineStart = GetLineStart(spanStart, maxTextExtent);
            var lineEnd   = GetLineEnd(spanEnd, maxTextExtent);

            // prefix - span - suffix
            var extractLength = lineEnd - lineStart;
            var spanLength    = filePositionSpan.Length;

            Invariants.Assert(spanLength <= extractLength);
            var prefixLength = Math.Min(spanStart - lineStart, maxTextExtent - spanLength);

            Invariants.Assert(prefixLength >= 0);
            var suffixLength = Math.Min(lineEnd - spanEnd, maxTextExtent - spanLength - prefixLength);

            Invariants.Assert(suffixLength >= 0);

            lineStart = spanStart - prefixLength;
            lineEnd   = spanEnd + suffixLength;
            var text    = GetText(lineStart, lineEnd - lineStart);
            var lineCol = GetLineColumn(spanStart);

            return(new FileExtract {
                Text = text,
                Offset = lineStart,
                Length = lineEnd - lineStart,
                LineNumber = lineCol.Item1,
                ColumnNumber = lineCol.Item2
            });
        }
コード例 #3
0
 public FlatFilePositionViewModel(
     ICodeSearchController controller,
     TreeViewItemViewModel parentViewModel,
     DirectoryEntry directoryEntry,
     FileEntry fileEntry,
     FilePositionSpan matchPosition)
     : base(controller, parentViewModel, fileEntry.Data != null)
 {
     _directoryEntry = directoryEntry;
     _fileEntry      = fileEntry;
     _matchPosition  = matchPosition;
 }
コード例 #4
0
        public FileExtract FilePositionSpanToFileExtract(FilePositionSpan filePositionSpan, int maxTextExtent)
        {
            var lineStart = GetLineStart(filePositionSpan.Position, maxTextExtent);
            var lineEnd   = GetLineEnd(filePositionSpan.Position + filePositionSpan.Length, maxTextExtent);
            var text      = GetText(lineStart, lineEnd - lineStart);
            var lineCol   = GetLineColumn(filePositionSpan.Position);

            return(new FileExtract {
                Text = text,
                Offset = lineStart,
                Length = lineEnd - lineStart,
                LineNumber = lineCol.Item1,
                ColumnNumber = lineCol.Item2
            });
        }
コード例 #5
0
 public FilePositionViewModel(ISourceExplorerViewModelHost host, FileEntryViewModel parentFile, FilePositionSpan position)
     : base(host, parentFile, false)
 {
     _parentFile = parentFile;
     _position   = position;
 }
コード例 #6
0
 public FilePositionViewModel(ICodeSearchController controller, FileEntryViewModel parentFile, FilePositionSpan matchPosition)
     : base(controller, parentFile, false)
 {
     _parentFile    = parentFile;
     _matchPosition = matchPosition;
 }
コード例 #7
0
ファイル: TestSearchCode.cs プロジェクト: zpublic/vs-chromium
        private static string ExtractFileText(DirectoryEntry chromiumEntry, FileSystemEntry fileSystemEntry, FilePositionSpan filePositionSpan)
        {
            var path = PathHelpers.CombinePaths(chromiumEntry.Name, fileSystemEntry.Name);

            if (!File.Exists(path))
            {
                return(string.Format("File not found: {0}", path));
            }
            var text   = File.ReadAllText(path);
            var offset = filePositionSpan.Position;
            var length = Math.Min(80, filePositionSpan.Length);

            if (offset < 0)
            {
                return("<Invalid offset>");
            }
            if (length < 0)
            {
                return("<Invalid length>");
            }
            if (offset + length > text.Length)
            {
                return("<Invalid span>");
            }
            var extract = text.Substring(offset, length);

            return(extract);
        }
コード例 #8
0
 public FileExtract FilePositionSpanToFileExtract(FilePositionSpan filePositionSpan, int maxTextExtent)
 {
     return(_impl.FilePositionSpanToFileExtract(filePositionSpan, maxTextExtent));
 }