AutoWikiBrowser.ExternalProgram.ProcessArticle C# (CSharp) Метод

ProcessArticle() публичный Метод

public ProcessArticle ( string articleText, string articleTitle, int @namespace, string &summary, bool &skip ) : string
articleText string
articleTitle string
@namespace int
summary string
skip bool
Результат string
        public string ProcessArticle(string articleText, string articleTitle, int @namespace, out string summary, out bool skip)
        {
            string origText = articleText;
            skip = false;
            summary = "";

            string ioFile = txtFile.Text;

            try
            {
                // under Wine WaitForExit() does not work and need to use absolute file paths. So under Linux use StandardOutput.ReadToEnd instead
                if(Globals.UsingLinux)
                {
                    System.Diagnostics.Process p = new System.Diagnostics.Process();
                    p.StartInfo.FileName = txtProgram.Text;
                    p.StartInfo.Arguments = Tools.ApplyKeyWords(articleTitle, txtParameters.Text.Replace("%%file%%", txtFile.Text));
                    p.StartInfo.UseShellExecute = false;
                    p.StartInfo.RedirectStandardOutput = true;

                    if (radFile.Checked)
                        Tools.WriteTextFileAbsolutePath(articleText, ioFile, false);
                    else
                        p.StartInfo.Arguments = p.StartInfo.Arguments.Replace("%%articletext%%", articleText);

                    p.Start();

                    string output = p.StandardOutput.ReadToEnd();
                    // pretend to do something with output just to keep compiler happy
                    Tools.WriteDebug("Ext Proc", output);
                }
                else
                {
                    System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo
                                                                  {
                                                                      WorkingDirectory = Path.GetDirectoryName(txtProgram.Text),
                                                                      FileName = Path.GetFileName(txtProgram.Text),
                                                                      Arguments = Tools.ApplyKeyWords(articleTitle, txtParameters.Text.Replace("%%file%%", txtFile.Text))
                                                                  };

                    if (radFile.Checked)
                    {
                        if (txtFile.Text.Contains("\\"))
                            Tools.WriteTextFileAbsolutePath(articleText, ioFile, false);
                        else
                            Tools.WriteTextFile(articleText, ioFile, false);
                    }
                    else
                        psi.Arguments = psi.Arguments.Replace("%%articletext%%", articleText);

                    System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);

                    p.WaitForExit();
                }

                if (File.Exists(ioFile))
                {
                    articleText = File.ReadAllText(ioFile);

                    skip = (chkSkip.Checked && (articleText == origText));

                    File.Delete(ioFile);
                }
                return articleText;
            }
            catch (Exception ex)
            {
                Tools.WriteDebug("Ext Proc", ex.StackTrace);
                // Most, if not all exceptions here are related to user wrong user input
                // or environment specifics, so ErrorHandler is not needed.
                MessageBox.Show(ActiveForm, ex.Message, "External processing error",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);

                return origText;
            }
        }