コード例 #1
0
ファイル: Program.cs プロジェクト: dreikanter/refrep
        ///<summary>
        /// This method launches DocProcessor and handles document processing.
        /// </summary>
        /// <remarks>
        /// Each *FileName parameter is converted to full file path inside of this method. In other 
        /// case this may lead to file-not-found exception during Word or Excel interoperation (external 
        /// processes may have different current directories, that's why relative pathes may not work).
        /// </remarks>
        private static void ProcessDoc(string sourceFileName, string destFileName, string refFileName, ReferenceOrder order)
        {
            var refFile = Path.GetFullPath(refFileName);
            var srcFile = Path.GetFullPath(sourceFileName);
            var destFile = Path.GetFullPath(destFileName);

            LogWriteLine("{0} % {1} -> {2}".Fill(Path.GetFileName(sourceFileName),
                Path.GetFileName(refFileName), Path.GetFileName(destFileName)));

            LogWrite("Reading references from {0} ({1})... ".
                Fill(Path.GetFileName(refFile), refFile.GetFileSize().ToFormattedFileSize()));

            var refs = ReadReferences(refFile);

            try
            {
                ValidateReferences(refs);
            }
            catch(Exception ex)
            {
                LogWriteLine("\n{0}\n{1}".Fill(ex.Message, "Processing stopped."));
                return;
            }

            LogWriteLine("Done. Got {0} records.".Fill(refs.Count));
            LogWriteLine("Opening {0} ({1})...".Fill(Path.GetFileName(srcFile), srcFile.GetFileSize().ToFormattedFileSize()));

            using (var proc = new DocProcessor(srcFile, refs, order))
            {
                proc.Message += OnMessage;
                ReportProcState(proc);

                try
                {
                    proc.Process(destFile);
                }
                catch (Exception ex)
                {
                    LogWriteLine("Error: " + ex.Message);
                }
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: dreikanter/refrep
        private static void ReportProcState(DocProcessor proc)
        {
            LogWriteLine("Found {0} reference groups; {1} bad IDs; {2} unknown IDs; {3} unknown tags".
                Fill(proc.Replacer.Replacements.Count, proc.Replacer.BadIds.Length,
                    proc.Replacer.UnknownIds.Length, proc.Replacer.UnknownTags.Length));

            if (proc.Replacer.BadIds.Any())
            {
                LogWriteLine("Bad IDs: " + proc.Replacer.BadIds.CommaSeparated());
            }

            if (proc.Replacer.UnknownIds.Any())
            {
                LogWriteLine("Unknown IDs: " + proc.Replacer.UnknownIds.Cast<string>().CommaSeparated());
            }

            if (proc.Replacer.UnknownTags.Any())
            {
                LogWriteLine("Unknown Tags: " + proc.Replacer.UnknownTags.CommaSeparated());
            }
        }