Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,22 @@ namespace Microsoft.PowerShell.Commands
[Cmdlet(
VerbsData.ConvertFrom, "Markdown",
DefaultParameterSetName = PathParameterSet,
HelpUri = "TBD")]
HelpUri = "https://go.microsoft.com/fwlink/?linkid=2006503")]
[OutputType(typeof(Microsoft.PowerShell.MarkdownRender.MarkdownInfo))]
public class ConvertFromMarkdownCommand : PSCmdlet
{
/// <summary>
/// Gets or sets path to the file to convert from Markdown to MarkdownInfo.
/// </summary>
[ValidateNotNullOrEmpty]
[Parameter(ParameterSetName = PathParameterSet, Mandatory = true)]
[Parameter(ParameterSetName = PathParameterSet, Mandatory = true, Position = 0)]
public string[] Path { get; set; }

/// <summary>
/// Gets or sets the path to the file to convert from Markdown to MarkdownInfo.
/// </summary>
[ValidateNotNullOrEmpty]
[Alias("PSPath", "LP")]
[Parameter(ParameterSetName = LiteralPathParameterSet, Mandatory = true)]
public string[] LiteralPath { get; set; }

Expand All @@ -56,20 +57,29 @@ public class ConvertFromMarkdownCommand : PSCmdlet
private const string LiteralPathParameterSet = "LiteralParamSet";
private const string InputObjParamSet = "InputObjParamSet";
private MarkdownConversionType conversionType = MarkdownConversionType.HTML;
private MarkdownOptionInfo mdOption = null;
private PSMarkdownOptionInfo mdOption = null;

/// <summary>
/// Read the MarkdownOptionInfo set in SessionState.
/// Read the PSMarkdownOptionInfo set in SessionState.
/// </summary>
protected override void BeginProcessing()
{
mdOption = SessionState.PSVariable.GetValue("MarkdownOptionInfo", new MarkdownOptionInfo()) as MarkdownOptionInfo;
mdOption = this.CommandInfo.Module.SessionState.PSVariable.GetValue("PSMarkdownOptionInfo", new PSMarkdownOptionInfo()) as PSMarkdownOptionInfo;

if (mdOption == null)
{
throw new InvalidOperationException();
}

bool? supportsVT100 = this.Host?.UI.SupportsVirtualTerminal;

// supportsVT100 == null if the host is null.
// supportsVT100 == false if host does not support VT100.
if (supportsVT100 != true)
{
mdOption.EnableVT100Encoding = false;
}

if (AsVT100EncodedString)
{
conversionType = MarkdownConversionType.VT100;
Expand Down Expand Up @@ -122,7 +132,7 @@ protected override void ProcessRecord()
}
}

private void ConvertEachFile(IEnumerable<string> paths, MarkdownConversionType conversionType, bool isLiteral, MarkdownOptionInfo optionInfo)
private void ConvertEachFile(IEnumerable<string> paths, MarkdownConversionType conversionType, bool isLiteral, PSMarkdownOptionInfo optionInfo)
{
foreach (var path in paths)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ namespace Microsoft.PowerShell.Commands
[Cmdlet(
VerbsCommon.Set, "MarkdownOption",
DefaultParameterSetName = IndividualSetting,
HelpUri = "TBD")]
[OutputType(typeof(Microsoft.PowerShell.MarkdownRender.MarkdownOptionInfo))]
HelpUri = "https://go.microsoft.com/fwlink/?linkid=2006265")]
[OutputType(typeof(Microsoft.PowerShell.MarkdownRender.PSMarkdownOptionInfo))]
public class SetMarkdownOptionCommand : PSCmdlet
{
/// <summary>
Expand Down Expand Up @@ -117,13 +117,13 @@ public class SetMarkdownOptionCommand : PSCmdlet
/// Gets or sets InputObject.
/// </summary>
[ValidateNotNullOrEmpty]
[Parameter(ParameterSetName = InputObjectParamSet, Mandatory = true, ValueFromPipeline = true)]
[Parameter(ParameterSetName = InputObjectParamSet, Mandatory = true, ValueFromPipeline = true, Position = 0)]
public PSObject InputObject { get; set; }

private const string IndividualSetting = "IndividualSetting";
private const string InputObjectParamSet = "InputObject";
private const string ThemeParamSet = "Theme";
private const string MarkdownOptionInfoVariableName = "MarkdownOptionInfo";
private const string MarkdownOptionInfoVariableName = "PSMarkdownOptionInfo";
private const string LightThemeName = "Light";
private const string DarkThemeName = "Dark";

Expand All @@ -132,12 +132,12 @@ public class SetMarkdownOptionCommand : PSCmdlet
/// </summary>
protected override void EndProcessing()
{
MarkdownOptionInfo mdOptionInfo = null;
PSMarkdownOptionInfo mdOptionInfo = null;

switch (ParameterSetName)
{
case ThemeParamSet:
mdOptionInfo = new MarkdownOptionInfo();
mdOptionInfo = new PSMarkdownOptionInfo();
if (string.Equals(Theme, LightThemeName, StringComparison.OrdinalIgnoreCase))
{
mdOptionInfo.SetLightTheme();
Expand All @@ -151,7 +151,7 @@ protected override void EndProcessing()

case InputObjectParamSet:
object baseObj = InputObject.BaseObject;
mdOptionInfo = baseObj as MarkdownOptionInfo;
mdOptionInfo = baseObj as PSMarkdownOptionInfo;

if (mdOptionInfo == null)
{
Expand All @@ -167,21 +167,20 @@ protected override void EndProcessing()
break;

case IndividualSetting:
mdOptionInfo = new MarkdownOptionInfo();
mdOptionInfo = new PSMarkdownOptionInfo();
SetOptions(mdOptionInfo);
break;
}

var sessionVar = SessionState.PSVariable;
sessionVar.Set(MarkdownOptionInfoVariableName, mdOptionInfo);
this.CommandInfo.Module.SessionState.PSVariable.Set(MarkdownOptionInfoVariableName, mdOptionInfo);

if(PassThru.IsPresent)
{
WriteObject(mdOptionInfo);
}
}

private void SetOptions(MarkdownOptionInfo mdOptionInfo)
private void SetOptions(PSMarkdownOptionInfo mdOptionInfo)
{
if (!string.IsNullOrEmpty(Header1Color))
{
Expand Down Expand Up @@ -245,18 +244,18 @@ private void SetOptions(MarkdownOptionInfo mdOptionInfo)
/// </summary>
[Cmdlet(
VerbsCommon.Get, "MarkdownOption",
HelpUri = "TBD")]
[OutputType(typeof(Microsoft.PowerShell.MarkdownRender.MarkdownOptionInfo))]
HelpUri = "https://go.microsoft.com/fwlink/?linkid=2006371")]
[OutputType(typeof(Microsoft.PowerShell.MarkdownRender.PSMarkdownOptionInfo))]
public class GetMarkdownOptionCommand : PSCmdlet
{
private const string MarkdownOptionInfoVariableName = "MarkdownOptionInfo";
private const string MarkdownOptionInfoVariableName = "PSMarkdownOptionInfo";

/// <summary>
/// Override EndProcessing.
/// </summary>
protected override void EndProcessing()
{
WriteObject(SessionState.PSVariable.GetValue(MarkdownOptionInfoVariableName, new MarkdownOptionInfo()));
WriteObject(this.CommandInfo.Module.SessionState.PSVariable.GetValue(MarkdownOptionInfoVariableName, new PSMarkdownOptionInfo()));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ namespace Microsoft.PowerShell.Commands
/// </summary>
[Cmdlet(
VerbsCommon.Show, "Markdown",
HelpUri = "TBD")]
HelpUri = "https://go.microsoft.com/fwlink/?linkid=2006266")]
[OutputType(typeof(string))]
public class ShowMarkdownCommand : PSCmdlet
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public sealed class MarkdownConverter
/// <param name="conversionType">Specifies type of conversion, either VT100 or HTML.</param>
/// <param name="optionInfo">Specifies the rendering options for VT100 rendering.</param>
/// <returns>MarkdownInfo object with the converted output.</returns>
public static MarkdownInfo Convert(string markdownString, MarkdownConversionType conversionType, MarkdownOptionInfo optionInfo)
public static MarkdownInfo Convert(string markdownString, MarkdownConversionType conversionType, PSMarkdownOptionInfo optionInfo)
{
var renderInfo = new MarkdownInfo();
var writer = new StringWriter();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

<ItemGroup>
<!-- Source: https://github.com/lunet-io/markdig/ -->
<ProjectReference Include="../System.Management.Automation/System.Management.Automation.csproj" />
<PackageReference Include="Markdig.Signed" Version="0.15.1" />
</ItemGroup>

Expand Down
Loading