Skip to content

Commit

Permalink
Fixed lijunle#72 < and > in comments are not getting replaced w…
Browse files Browse the repository at this point in the history
…ith < and >
  • Loading branch information
Arlodotexe committed Jul 16, 2020
1 parent aba951d commit 6aa22a2
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 21 deletions.
58 changes: 47 additions & 11 deletions Vsxmd/Units/Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,23 +82,16 @@ internal static string ToReferenceLink(this string memberName, bool useShortName
new MemberName(memberName).ToReferenceLink(useShortName);

/// <summary>
/// Wrap the <paramref name="code"/> into Markdown backtick safely.
/// <para>The backtick characters inside the <paramref name="code"/> reverse as it is.</para>
/// Parse the <paramref name="code"/> into a markdown-safe format.
/// </summary>
/// <param name="code">The code span.</param>
/// <returns>The Markdown code span.</returns>
/// <remarks>Reference: http://meta.stackexchange.com/questions/55437/how-can-the-backtick-character-be-included-in-code .</remarks>
internal static string AsCode(this string code)
{
string backticks = "`";
while (code.Contains(backticks, StringComparison.InvariantCulture))
{
backticks += "`";
}
code = EscapeBackticks(code);
code = ParseBrackets(code);

return code.StartsWith("`", StringComparison.Ordinal) || code.EndsWith("`", StringComparison.Ordinal)
? $"{backticks} {code} {backticks}"
: $"{backticks}{code}{backticks}";
return code;
}

/// <summary>
Expand Down Expand Up @@ -234,5 +227,48 @@ private static string AsSpanMargin(this XNode node)

return string.Empty;
}

/// <summary>
/// Wrap the <paramref name="str"/> into Markdown backtick safely.
/// <para>The backtick characters inside the <paramref name="str"/> reverse as it is.</para>
/// </summary>
/// <remarks>Reference: http://meta.stackexchange.com/questions/55437/how-can-the-backtick-character-be-included-in-code .</remarks>
/// <returns>Markdown with escaped back ticks.</returns>
private static string EscapeBackticks(string str)
{
string backticks = "`";
while (str.Contains(backticks, StringComparison.InvariantCulture))
{
backticks += "`";
}

return str.StartsWith("`", StringComparison.Ordinal) || str.EndsWith("`", StringComparison.Ordinal)
? $"{backticks} {str} {backticks}"
: $"{backticks}{str}{backticks}";
}

/// <summary>
/// Parse the brackets from XML-safe to Markdown formatting.
/// </summary>
/// <param name="str"><see cref="string"/> to format</param>
/// <returns>String with converted brackets.</returns>
private static string ParseBrackets(string str)
{
Dictionary<string, string> bracketsToReplace = new Dictionary<string, string>
{
{ "&lt;", "<" },
{ "&gt;", ">" },
};

foreach (var (originalSymbol, newSymbol) in bracketsToReplace)
{
while (str.Contains(originalSymbol, StringComparison.InvariantCulture))
{
str = str.Replace(originalSymbol, newSymbol, StringComparison.InvariantCulture);
}
}

return str;
}
}
}
48 changes: 41 additions & 7 deletions Vsxmd/Vsxmd.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,10 @@
- [Extensions](#T-Vsxmd-Units-Extensions 'Vsxmd.Units.Extensions')
- [AsCode(code)](#M-Vsxmd-Units-Extensions-AsCode-System-String- 'Vsxmd.Units.Extensions.AsCode(System.String)')
- [Escape(content)](#M-Vsxmd-Units-Extensions-Escape-System-String- 'Vsxmd.Units.Extensions.Escape(System.String)')
- [EscapeBackticks()](#M-Vsxmd-Units-Extensions-EscapeBackticks-System-String- 'Vsxmd.Units.Extensions.EscapeBackticks(System.String)')
- [Join(value,separator)](#M-Vsxmd-Units-Extensions-Join-System-Collections-Generic-IEnumerable{System-String},System-String- 'Vsxmd.Units.Extensions.Join(System.Collections.Generic.IEnumerable{System.String},System.String)')
- [NthLast\`\`1(source,index)](#M-Vsxmd-Units-Extensions-NthLast``1-System-Collections-Generic-IEnumerable{``0},System-Int32- 'Vsxmd.Units.Extensions.NthLast``1(System.Collections.Generic.IEnumerable{``0},System.Int32)')
- [ParseBrackets(str)](#M-Vsxmd-Units-Extensions-ParseBrackets-System-String- 'Vsxmd.Units.Extensions.ParseBrackets(System.String)')
- [Suffix(value,suffix)](#M-Vsxmd-Units-Extensions-Suffix-System-String,System-String- 'Vsxmd.Units.Extensions.Suffix(System.String,System.String)')
- [TakeAllButLast\`\`1(source,count)](#M-Vsxmd-Units-Extensions-TakeAllButLast``1-System-Collections-Generic-IEnumerable{``0},System-Int32- 'Vsxmd.Units.Extensions.TakeAllButLast``1(System.Collections.Generic.IEnumerable{``0},System.Int32)')
- [ToAnchor(href)](#M-Vsxmd-Units-Extensions-ToAnchor-System-String- 'Vsxmd.Units.Extensions.ToAnchor(System.String)')
Expand Down Expand Up @@ -452,9 +454,7 @@ Extensions helper.

##### Summary

Wrap the `code` into Markdown backtick safely.

The backtick characters inside the `code` reverse as it is.
Parse the `code` into a markdown-safe format.

##### Returns

Expand All @@ -466,10 +466,6 @@ The Markdown code span.
| ---- | ---- | ----------- |
| code | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The code span. |

##### Remarks

Reference: http://meta.stackexchange.com/questions/55437/how-can-the-backtick-character-be-included-in-code .

<a name='M-Vsxmd-Units-Extensions-Escape-System-String-'></a>
### Escape(content) `method`

Expand All @@ -487,6 +483,27 @@ The escaped content.
| ---- | ---- | ----------- |
| content | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | The content. |

<a name='M-Vsxmd-Units-Extensions-EscapeBackticks-System-String-'></a>
### EscapeBackticks() `method`

##### Summary

Wrap the `str` into Markdown backtick safely.

The backtick characters inside the `str` reverse as it is.

##### Returns

Markdown with escaped back ticks.

##### Parameters

This method has no parameters.

##### Remarks

Reference: http://meta.stackexchange.com/questions/55437/how-can-the-backtick-character-be-included-in-code .

<a name='M-Vsxmd-Units-Extensions-Join-System-Collections-Generic-IEnumerable{System-String},System-String-'></a>
### Join(value,separator) `method`

Expand Down Expand Up @@ -529,6 +546,23 @@ The element at the specified position in the `source` sequence.
| ---- | ----------- |
| TSource | The type of the elements of `source`. |

<a name='M-Vsxmd-Units-Extensions-ParseBrackets-System-String-'></a>
### ParseBrackets(str) `method`

##### Summary

Parse the brackets from XML-safe to Markdown formatting.

##### Returns

String with converted brackets

##### Parameters

| Name | Type | Description |
| ---- | ---- | ----------- |
| str | [System.String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') | [String](http://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k:System.String 'System.String') to format |

<a name='M-Vsxmd-Units-Extensions-Suffix-System-String,System-String-'></a>
### Suffix(value,suffix) `method`

Expand Down
19 changes: 16 additions & 3 deletions Vsxmd/Vsxmd.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 6aa22a2

Please sign in to comment.