diff --git a/zorgoz.Nlog4LinqPad/LinqPadExtensions.cs b/zorgoz.Nlog4LinqPad/LinqPadExtensions.cs deleted file mode 100644 index d75a70f..0000000 --- a/zorgoz.Nlog4LinqPad/LinqPadExtensions.cs +++ /dev/null @@ -1,82 +0,0 @@ -using LINQPad; -using System.IO; -using System.Text; -using System.Windows.Forms; - -namespace zorgoz.Nlog4LinqPad -{ - /// - /// Credits to JoeAlbahari on LinqPad forum - /// - internal static class LinqPadExtensions - { - public class StringBuilderTextWriter : TextWriter - { - private readonly StringBuilder stringBuilder = new StringBuilder(); - - public override void Write(char value) - { - stringBuilder.Append(value); - } - - public override void Write(string value) - { - stringBuilder.AppendLine(value); - } - - public override void WriteLine(object value) - { - stringBuilder.AppendLine(value.ToString()); - } - - public override Encoding Encoding => Encoding.Default; - - public override string ToString() => stringBuilder.ToString(); - } - - public static T DumpToPanel(this T toDump, string panelName) - { - if (string.IsNullOrWhiteSpace(panelName)) return toDump.Dump(); - - WebBrowser browser; - TextWriter formatter; - - var panel = PanelManager.GetOutputPanel(panelName); - bool first = panel == null; - if (first) - { - panel = PanelManager.DisplayControl(browser = new WebBrowser(), panelName); - - formatter = new StringBuilderTextWriter(); - - browser.Tag = formatter; - bool init = true; - browser.DocumentCompleted += (sender, args) => - { - if (init) browser.DocumentText = formatter.ToString(); - init = false; - }; - } - else - { - browser = (WebBrowser)(panel.GetControl()); - formatter = (TextWriter)browser.Tag; - } - - if (toDump is string) - { - formatter.WriteLine(toDump); - } - else - { - var method = toDump.GetType().GetMethod("GetContent"); - formatter.WriteLine(method.Invoke(toDump, null)); - } - - if (first || browser.ReadyState == WebBrowserReadyState.Complete) - browser.DocumentText = formatter.ToString(); - - return toDump; - } - } -} diff --git a/zorgoz.Nlog4LinqPad/LinqPadHtmlTarget.cs b/zorgoz.Nlog4LinqPad/LinqPadHtmlTarget.cs index 12e042b..fca23b1 100644 --- a/zorgoz.Nlog4LinqPad/LinqPadHtmlTarget.cs +++ b/zorgoz.Nlog4LinqPad/LinqPadHtmlTarget.cs @@ -22,8 +22,6 @@ public LinqPadHtmlTarget() public TargetStyling Styling { get; set; } = TargetStyling.Default; - public string Prepend { get; set; } - public string Append { get; set; } public string ItemNode { get; set; } = "span"; public string RowNode { get; set; } = "div"; public string PanelName { get; set; } @@ -46,14 +44,20 @@ public override Layout Layout protected override void InitializeTarget() { - Util.RawHtml(@"").DumpToPanel(PanelName); - Util.RawHtml(GetHtmlStyleTag()).DumpToPanel(PanelName); - Util.RawHtml("").DumpToPanel(PanelName); + if (string.IsNullOrWhiteSpace(PanelName)) + { + Util.RawHtml(GetHtmlStyleTag()).Dump(); + } + else + { + GetHtmlStyleTag().InitPanel(PanelName); + } } protected override void CloseTarget() { Util.RawHtml("").DumpToPanel(PanelName); + PanelHelper.End(); } private bool HasRowStyle => !string.IsNullOrWhiteSpace(Styling.Row); diff --git a/zorgoz.Nlog4LinqPad/packages.config b/zorgoz.Nlog4LinqPad/packages.config index bd291fb..d07f515 100644 --- a/zorgoz.Nlog4LinqPad/packages.config +++ b/zorgoz.Nlog4LinqPad/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file diff --git a/zorgoz.Nlog4LinqPad/zorgoz.Nlog4LinqPad.csproj b/zorgoz.Nlog4LinqPad/zorgoz.Nlog4LinqPad.csproj index 6fde5ac..371232d 100644 --- a/zorgoz.Nlog4LinqPad/zorgoz.Nlog4LinqPad.csproj +++ b/zorgoz.Nlog4LinqPad/zorgoz.Nlog4LinqPad.csproj @@ -50,20 +50,20 @@ - + + ..\packages\System.Reactive.4.0.0\lib\net46\System.Reactive.dll + + - - - - - + + - + diff --git a/zorgoz.Nlog4LinqPad/zorgoz.Nlog4LinqPad.nuspec b/zorgoz.Nlog4LinqPad/zorgoz.Nlog4LinqPad.nuspec index f417a4b..a472b8b 100644 --- a/zorgoz.Nlog4LinqPad/zorgoz.Nlog4LinqPad.nuspec +++ b/zorgoz.Nlog4LinqPad/zorgoz.Nlog4LinqPad.nuspec @@ -2,7 +2,7 @@ $title$ - 0.5.0 + 0.6.0 $title$ $author$ $author$ @@ -10,7 +10,7 @@ https://github.com/zorgoz/Nlog4LinqPad false NLog logging support for LinqPad - Separate panel is using custom writer to optimize DOM. XML comments also added. + Fixed custom writer to support async usage. Copyright 2018 nlog nlog-target linqpad logging utility library