Skip to content

Commit

Permalink
Combine all input objects into string before calling ProcessMarkdownInfo
Browse files Browse the repository at this point in the history
  • Loading branch information
ArmaanMcleod committed Jan 14, 2024
1 parent b96b63b commit c7f5329
Showing 1 changed file with 22 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
// Licensed under the MIT License.

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Management.Automation;
using System.Management.Automation.Internal;
using System.Text;

using Microsoft.PowerShell.MarkdownRender;

Expand Down Expand Up @@ -62,14 +62,17 @@ public string[] LiteralPath

private System.Management.Automation.PowerShell _powerShell;

private readonly List<string> _inputObjectBuffer = new();
private PSMarkdownOptionInfo _mdOption;

private readonly StringBuilder _inputObjectBuffer = new();

/// <summary>
/// Override BeginProcessing.
/// </summary>
protected override void BeginProcessing()
{
_powerShell = System.Management.Automation.PowerShell.Create(RunspaceMode.CurrentRunspace);
_mdOption = PSMarkdownOptionInfoCache.Get(CommandInfo);
}

/// <summary>
Expand All @@ -82,15 +85,19 @@ protected override void ProcessRecord()
case "InputObject":
if (InputObject.BaseObject is MarkdownInfo markdownInfo)
{
ProcessMarkdownInfo(markdownInfo);
string markdownInfoString = UseBrowser.IsPresent
? markdownInfo.Html
: markdownInfo.VT100EncodedString;

_inputObjectBuffer.AppendLine(markdownInfoString);
}
else if (InputObject.BaseObject is string objectString)
{
_inputObjectBuffer.Add(objectString);
_inputObjectBuffer.AppendLine(objectString);
}
else
{
ConvertFromMarkdown("InputObject", InputObject.BaseObject);
_inputObjectBuffer.AppendLine(InputObject.BaseObject.ToString());
}

break;
Expand Down Expand Up @@ -231,13 +238,18 @@ private void ProcessMarkdownInfo(MarkdownInfo markdownInfo)
/// </summary>
protected override void EndProcessing()
{
if (_inputObjectBuffer.Count > 0)
if (_inputObjectBuffer.Length > 0)
{
string joinedInputToProcess = _inputObjectBuffer.Count == 1
? _inputObjectBuffer[0]
: string.Join(Environment.NewLine, _inputObjectBuffer);
MarkdownConversionType conversionType = UseBrowser.IsPresent
? MarkdownConversionType.HTML
: MarkdownConversionType.VT100;

MarkdownInfo convertedMarkdownInfo = MarkdownConverter.Convert(
_inputObjectBuffer.ToString(),
conversionType,
_mdOption);

ConvertFromMarkdown("InputObject", joinedInputToProcess);
ProcessMarkdownInfo(convertedMarkdownInfo);
}

_powerShell?.Dispose();
Expand Down

0 comments on commit c7f5329

Please sign in to comment.