public virtual void Write(string format, params object[] arg) { Debug.Assert(format != null); Buf.SetFormat(format, arg); if (ResolveUidMacros && Globals?.Engine != null) { Buf01.Clear(); var rc = Globals.Engine.ResolveUidMacros(Buf.ToString(), Buf01, true, true); Debug.Assert(Globals.Engine.IsSuccess(rc)); Buf.SetFormat("{0}", Buf01); } if (PunctSpaceCode != PunctSpaceCode.None) { Buf.SetFormat("{0}", PunctSpaceCode == PunctSpaceCode.Single ? SingleSpaceRegex.Replace(Buf.ToString(), @"$1 $3") : DoubleSpaceRegex.Replace(Buf.ToString(), @"$1 $3")); } if (WordWrap && Globals?.Engine != null) { Globals.Engine.WordWrap(Buf.ToString(), Buf); } if (SuppressNewLines) { while (Buf.IndexOf(ThreeNewLines) >= 0) { Buf.Replace(ThreeNewLines, TwoNewLines); } NumNewLines += (Buf.StartsWith(TwoNewLines) ? 2 : Buf.StartsWith(Environment.NewLine) ? 1 : 0); while (NumNewLines > 2 && Buf.StartsWith(Environment.NewLine)) { Buf.Remove(0, Environment.NewLine.Length); NumNewLines--; } var s = Buf.ToString(); if (Buf.Length > 0 && !string.Equals(s, Environment.NewLine) && !string.Equals(s, TwoNewLines)) { NumNewLines = Buf.EndsWith(TwoNewLines) ? 2 : Buf.EndsWith(Environment.NewLine) ? 1 : 0; } } if (EnableOutput) { try { App.OutputBufMutex.WaitOne(); EnforceOutputBufMaxSize(); if (Stdout) { App.OutputBuf.Append(Buf); } else { App.OutputBuf.Append(Buf); } RefreshOutputText(); } catch (Exception ex) { // do something } finally { App.OutputBufMutex.ReleaseMutex(); } } }
public virtual void Write(string format, params object[] arg) { Debug.Assert(format != null); Buf.SetFormat(format, arg); if (ResolveUidMacros && Globals?.Engine != null) { Buf01.Clear(); var rc = Globals.Engine.ResolveUidMacros(Buf.ToString(), Buf01, true, true); Debug.Assert(Globals.Engine.IsSuccess(rc)); Buf.SetFormat("{0}", Buf01); } if (PunctSpaceCode != PunctSpaceCode.None) { Buf.SetFormat("{0}", PunctSpaceCode == PunctSpaceCode.Single ? SingleSpaceRegex.Replace(Buf.ToString(), @"$1 $3") : DoubleSpaceRegex.Replace(Buf.ToString(), @"$1 $3")); } if (WordWrap && Globals?.Engine != null) { Globals.Engine.WordWrap(Buf.ToString(), Buf); } if (SuppressNewLines) { while (Buf.IndexOf(ThreeNewLines) >= 0) { Buf.Replace(ThreeNewLines, TwoNewLines); } NumNewLines += (Buf.StartsWith(TwoNewLines) ? 2 : Buf.StartsWith(Environment.NewLine) ? 1 : 0); while (NumNewLines > 2 && Buf.StartsWith(Environment.NewLine)) { Buf.Remove(0, Environment.NewLine.Length); NumNewLines--; } var s = Buf.ToString(); if (Buf.Length > 0 && !s.Equals(Environment.NewLine) && !s.Equals(TwoNewLines)) { NumNewLines = Buf.EndsWith(TwoNewLines) ? 2 : Buf.EndsWith(Environment.NewLine) ? 1 : 0; } } if (EnableOutput) { if (Stdout) { Console.Out.Write("{0}", Buf); } else { Console.Error.Write("{0}", Buf); } } }