Ejemplo n.º 1
0
        public override MatchResult Matches(FileInfo file, Dictionary <Type, IFileCache> fileCaches, CancellationToken token)
        {
            Encoding detectedEncoding = TextUtil.DetectEncoding(file);

            if (!m_Parameters.MatchOnlyWithinSingleLine)
            {
                string text = File.ReadAllText(file.FullName, detectedEncoding);
                if (m_Regex.IsMatch(text))
                {
                    return(new MatchResult(MatchResultType.Yes, new string[] { "Yes" }));
                }
            }
            else
            {
                using (StreamReader reader = TextUtil.CreateStreamReaderWithAppropriateEncoding(
                           file, detectedEncoding))
                {
                    while (!reader.EndOfStream)
                    {
                        string line = reader.ReadLine();
                        if (m_Regex.IsMatch(line))
                        {
                            return(new MatchResult(MatchResultType.Yes, new string[] { "Yes" }));
                        }
                    }
                }
            }
            return(new MatchResult(MatchResultType.No, new string[] { "No" }));
        }
Ejemplo n.º 2
0
        protected internal override ProcessingResult Process(FileInfo file, string[] values,
                                                             CancellationToken token)
        {
            string outputFilename = Util.ReplaceUtil.Replace(m_Parameters.FileName, file);

            if (!m_Parameters.OverwriteExistingFile && File.Exists(outputFilename))
            {
                return(new ProcessingResult(ProcessingResultType.Failure, "File exists", new FileInfo[0]));
            }
            Encoding detectedEncoding = TextUtil.DetectEncoding(file);

            string[] lines = File.ReadAllLines(file.FullName, detectedEncoding);
            Array.Sort(lines, m_Comparer);
            string tmpFile         = Path.GetTempFileName();
            bool   endsWithNewLine = TextUtil.FileEndsWithNewline(file, detectedEncoding);

            using (StreamWriter writer = TextUtil.CreateStreamWriterWithAppropriateEncoding(
                       tmpFile, detectedEncoding, m_Parameters.OutputEncoding))
            {
                writer.NewLine = TextUtil.GetNewline(file, m_Parameters.LineEndings);
                int i = 0;
                foreach (string line in lines)
                {
                    writer.Write(line);
                    if (i < lines.Length - 1 || endsWithNewLine)
                    {
                        writer.WriteLine();
                    }
                    i++;
                }
            }
            return(GetProcessingResultFromCopyAndDeleteTempFile(file, outputFilename, tmpFile,
                                                                m_Parameters.OverwriteExistingFile, m_Parameters.MoveOriginalToRecycleBin));
        }
        protected internal override ProcessingResult Process(FileInfo file, string[] values,
                                                             CancellationToken token)
        {
            string outputFilename = ReplaceUtil.Replace(m_Parameters.FileName, file);

            if (!m_Parameters.OverwriteExistingFile && File.Exists(outputFilename))
            {
                return(new ProcessingResult(ProcessingResultType.Failure, "File exists", new FileInfo[0]));
            }
            Encoding encoding        = TextUtil.DetectEncoding(file);
            string   tmpFile         = Path.GetTempFileName();
            bool     endsWithNewLine = TextUtil.FileEndsWithNewline(file, encoding);

            using (StreamWriter writer = TextUtil.CreateStreamWriterWithAppropriateEncoding(
                       tmpFile, encoding, m_Parameters.OutputEncoding))
            {
                writer.NewLine = TextUtil.GetNewline(file, m_Parameters.LineEndings);
                using (StreamReader reader = TextUtil.CreateStreamReaderWithAppropriateEncoding(file, encoding))
                {
                    string text = m_Parameters.Text ?? string.Empty;

                    if (m_Parameters.PrependOrAppend == PrependAppend.Prepend)
                    {
                        WriteLines(writer, text);
                    }
                    bool writtenAnyFromFile = false;
                    while (!reader.EndOfStream)
                    {
                        if (writtenAnyFromFile)
                        {
                            writer.WriteLine();
                        }
                        writer.Write(reader.ReadLine());
                        writtenAnyFromFile = true;
                    }
                    // Add a trailing line ending if the original file ended in one
                    if (endsWithNewLine)
                    {
                        writer.WriteLine();
                    }
                    if (m_Parameters.PrependOrAppend == PrependAppend.Append)
                    {
                        WriteLines(writer, text);
                    }
                }
            }
            return(GetProcessingResultFromCopyAndDeleteTempFile(file, outputFilename, tmpFile,
                                                                m_Parameters.OverwriteExistingFile, m_Parameters.MoveOriginalToRecycleBin));
        }
Ejemplo n.º 4
0
        protected internal override ProcessingResult Process(FileInfo file, string[] values,
                                                             CancellationToken token)
        {
            string outputFilename = ReplaceUtil.Replace(m_Parameters.FileName, file);

            if (!m_Parameters.OverwriteExistingFile && File.Exists(outputFilename))
            {
                return(new ProcessingResult(ProcessingResultType.Failure, "File exists", new FileInfo[0]));
            }
            Encoding encoding = TextUtil.DetectEncoding(file);
            string   tmpFile  = Path.GetTempFileName();

            bool endsWithNewLine = TextUtil.FileEndsWithNewline(file, encoding);

            using (StreamWriter writer = TextUtil.CreateStreamWriterWithAppropriateEncoding(
                       tmpFile, encoding, m_Parameters.OutputEncoding))
            {
                writer.NewLine = TextUtil.GetNewline(file, m_Parameters.LineEndings);
                using (StreamReader reader = TextUtil.CreateStreamReaderWithAppropriateEncoding(
                           file, encoding))
                {
                    bool keep       = m_Parameters.FilterType == LineFilterType.KeepMatchingLines;
                    bool anyWritten = false;
                    while (!reader.EndOfStream)
                    {
                        string line    = reader.ReadLine();
                        bool   matches = m_Regex.IsMatch(line);

                        if (matches == keep)
                        {
                            if (anyWritten)
                            {
                                writer.WriteLine();
                            }
                            writer.Write(line);
                            anyWritten = true;
                        }
                    }
                    if (endsWithNewLine)
                    {
                        writer.WriteLine();
                    }
                }
            }
            return(GetProcessingResultFromCopyAndDeleteTempFile(file, outputFilename, tmpFile,
                                                                m_Parameters.OverwriteExistingFile, m_Parameters.MoveOriginalToRecycleBin));
        }
Ejemplo n.º 5
0
        protected internal override ProcessingResult Process(FileInfo file, string[] values,
                                                             CancellationToken token)
        {
            string outputFilename = Util.ReplaceUtil.Replace(m_Parameters.FileName, file);

            if (!m_Parameters.OverwriteExistingFile && File.Exists(outputFilename))
            {
                return(new ProcessingResult(ProcessingResultType.Failure, "File exists", new FileInfo[0]));
            }
            Encoding detectedEncoding = TextUtil.DetectEncoding(file);
            string   tmpFile          = Path.GetTempFileName();

            using (StreamWriter writer = TextUtil.CreateStreamWriterWithAppropriateEncoding(
                       tmpFile, detectedEncoding, m_Parameters.OutputEncoding))
            {
                writer.NewLine = TextUtil.GetNewline(file, m_Parameters.LineEndings);
                if (!m_Parameters.MatchOnlyWithinSingleLine)
                {
                    string text = File.ReadAllText(file.FullName, detectedEncoding);
                    text = m_Regex.Replace(text, m_ReplacementText);
                    writer.Write(text);
                }
                else
                {
                    bool endsWithNewLine = TextUtil.FileEndsWithNewline(file, detectedEncoding);
                    using (StreamReader reader = TextUtil.CreateStreamReaderWithAppropriateEncoding(
                               file, detectedEncoding))
                    {
                        while (!reader.EndOfStream)
                        {
                            string line = reader.ReadLine();
                            line = m_Regex.Replace(line, m_ReplacementText);
                            if (!reader.EndOfStream || endsWithNewLine)
                            {
                                writer.WriteLine(line);
                            }
                            else
                            {
                                writer.Write(line);
                            }
                        }
                    }
                }
            }
            return(GetProcessingResultFromCopyAndDeleteTempFile(file, outputFilename, tmpFile,
                                                                m_Parameters.OverwriteExistingFile, m_Parameters.MoveOriginalToRecycleBin));
        }
Ejemplo n.º 6
0
        protected internal override ProcessingResult Process(FileInfo file, string[] values,
                                                             CancellationToken token)
        {
            string outputFilename = Util.ReplaceUtil.Replace(FileName, file);

            if (!OverwriteExistingFile && File.Exists(outputFilename))
            {
                return(new ProcessingResult(ProcessingResultType.Failure, "File exists", new FileInfo[0]));
            }
            Encoding encoding        = TextUtil.DetectEncoding(file);
            string   tmpFile         = Path.GetTempFileName();
            bool     endsWithNewLine = TextUtil.FileEndsWithNewline(file, encoding);

            using (StreamWriter writer = TextUtil.CreateStreamWriterWithAppropriateEncoding(
                       tmpFile, encoding, OutputEncodingType))
            {
                writer.NewLine = TextUtil.GetNewline(file, LineEndings);
                using (StreamReader reader = TextUtil.CreateStreamReaderWithAppropriateEncoding(
                           file, encoding))
                {
                    while (!reader.EndOfStream)
                    {
                        string line = reader.ReadLine();
                        line = TransformLine(line);
                        if (!reader.EndOfStream || endsWithNewLine)
                        {
                            writer.WriteLine(line);
                        }
                        else
                        {
                            writer.Write(line);
                        }
                    }
                }
            }
            return(GetProcessingResultFromCopyAndDeleteTempFile(file, outputFilename, tmpFile,
                                                                OverwriteExistingFile, MoveOriginalToRecycleBin));
        }