PowerShell / platyPS

Write PowerShell External Help in Markdown
MIT License
765 stars 149 forks source link

[Markdown.MAML.Parser.MarkdownParser].ParseString does not process quoted text correctly. #581

Closed jhoneill closed 3 months ago

jhoneill commented 2 years ago

Prerequisites

Steps to reproduce

  1. As a test file I have download the MD help file for Get-Help from. https://github.com/MicrosoftDocs/PowerShell-Docs/blob/main/reference/7.2/Microsoft.PowerShell.Core/Get-Help.md
  2. In VS Code I have set a break point on new-externalHelp but the important part is in the function GetMamlModelImpl which has a line $model = $p.ParseString($mdText, $parseMode, $_) (1605 in the .PSM1 file for v 0.14.2 )
  3. After this line has run examine $model.children[17].spans[-5..-1] | ft style,text -Wrap

The Markdown

>[!NOTE]
> In PowerShell 3.0 and PowerShell 4.0, `Get-Help` can't find **About** articles in modules unless
> the module is imported into the current session. This is a known issue. To get **About** articles
> in a module, import the module, either by using the `Import-Module` cmdlet or by running a cmdlet
> that's included in the module.

Translates to

 Style Text
 ----- ----
Normal .
       >[!NOTE] > In PowerShell 3.0 and PowerShell 4.0, `Get-Help` can't find
  Bold About
Normal articles in modules unless > the module is imported into the current session. This is a known issue. To get
  Bold About
Normal articles > in a module, import the module, either by using the `Import-Module` cmdlet or by running a cmdlet > that's included in the module.

i..e. newline > just merges together instead of preserving the same > markers and line breaks.

Expected behavior

The description part of Get-Help Get-Help looks  similar to what is displayed at https://docs.microsoft.com/en-gb/powershell/module/microsoft.powershell.core/get-help?view=powershell-7.2#description  i.e.

>[!NOTE] 
> In PowerShell 3.0 and PowerShell 4.0, `Get-Help` can't find About articles in modules unless 
> the module is imported into the current session. This is a known issue. To get About articles 
> in a module, import the module, either by using the `Import-Module` cmdlet or by running a cmdlet 
> that's included in the module.

Actual behavior

It displays as

    >[!NOTE] > In PowerShell 3.0 and PowerShell 4.0, `Get-Help` can't find About articles in modules unless > the module is imported into the current session. This is a known issue. To get About articles > in a module, import the module, either by using the `Import-Module` cmdlet or by running a cmdlet > that's included in the module.

Error details

No error message

Environment data

Directory: C:\Program Files\WindowsPowerShell\Modules

ModuleType Version    PreRelease Name                                PSEdition ExportedCommands
---------- -------    ---------- ----                                --------- ----------------
Script     0.14.2                platyPS                             Desk      {New-MarkdownHelp, Get-MarkdownMetadata, New-ExternalHelp, New-YamlHelp…

Name                           Value
----                           -----
PSVersion                      7.2.6
PSEdition                      Core
GitCommitId                    7.2.6
OS                             Microsoft Windows 10.0.22000
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Visuals

No response

sdwheeler commented 3 months ago

This is fixed in Microsoft.PowerShell.PlatyPS v1.