mirror of
https://github.com/xoofx/markdig.git
synced 2026-07-08 18:16:21 +00:00
Fix GlobalizationExtension RTL detection
This commit is contained in:
@@ -226,5 +226,27 @@ namespace Markdig.Tests.Specs.Globalization
|
||||
|
||||
TestParser.TestSpec("Nutrition |Apple | Oranges\n--|-- | --\nCalories|52|47\nSugar|10g|9g\n\n پێکهاتە |سێو | پڕتەقاڵ\n--|-- | --\nکالۆری|٥٢|٤٧\nشەکر| ١٠گ|٩گ", "<table>\n<thead>\n<tr>\n<th>Nutrition</th>\n<th>Apple</th>\n<th>Oranges</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Calories</td>\n<td>52</td>\n<td>47</td>\n</tr>\n<tr>\n<td>Sugar</td>\n<td>10g</td>\n<td>9g</td>\n</tr>\n</tbody>\n</table>\n<table dir=\"rtl\" align=\"right\">\n<thead>\n<tr>\n<th>پێکهاتە</th>\n<th>سێو</th>\n<th>پڕتەقاڵ</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>کالۆری</td>\n<td>٥٢</td>\n<td>٤٧</td>\n</tr>\n<tr>\n<td>شەکر</td>\n<td>١٠گ</td>\n<td>٩گ</td>\n</tr>\n</tbody>\n</table>", "globalization+advanced+emojis", context: "Example 3\nSection Extensions / Globalization\n");
|
||||
}
|
||||
|
||||
// But if text starts with LTR characters, no attributes are added.
|
||||
[Test]
|
||||
public void ExtensionsGlobalization_Example004()
|
||||
{
|
||||
// Example 4
|
||||
// Section: Extensions / Globalization
|
||||
//
|
||||
// The following Markdown:
|
||||
// Foo میوە
|
||||
//
|
||||
// میوە bar
|
||||
//
|
||||
// Baz میوە
|
||||
//
|
||||
// Should be rendered as:
|
||||
// <p>Foo میوە</p>
|
||||
// <p dir="rtl">میوە bar</p>
|
||||
// <p>Baz میوە</p>
|
||||
|
||||
TestParser.TestSpec("Foo میوە\n\nمیوە bar\n\nBaz میوە", "<p>Foo میوە</p>\n<p dir=\"rtl\">میوە bar</p>\n<p>Baz میوە</p>", "globalization+advanced+emojis", context: "Example 4\nSection Extensions / Globalization\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,4 +186,18 @@ Sugar|10g|9g
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
````````````````````````````````
|
||||
|
||||
But if text starts with LTR characters, no attributes are added.
|
||||
|
||||
```````````````````````````````` example
|
||||
Foo میوە
|
||||
|
||||
میوە bar
|
||||
|
||||
Baz میوە
|
||||
.
|
||||
<p>Foo میوە</p>
|
||||
<p dir="rtl">میوە bar</p>
|
||||
<p>Baz میوە</p>
|
||||
````````````````````````````````
|
||||
@@ -93,20 +93,23 @@ namespace Markdig.Extensions.Globalization
|
||||
{
|
||||
for (int i = slice.Start; i <= slice.End; i++)
|
||||
{
|
||||
if (slice[i] < 128)
|
||||
char c = slice[i];
|
||||
if (c < 128)
|
||||
{
|
||||
if (CharHelper.IsAlpha(c))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
int rune;
|
||||
if (CharHelper.IsHighSurrogate(slice[i]) && i < slice.End && CharHelper.IsLowSurrogate(slice[i + 1]))
|
||||
int rune = c;
|
||||
if (CharHelper.IsHighSurrogate(c) && i < slice.End && CharHelper.IsLowSurrogate(slice[i + 1]))
|
||||
{
|
||||
Debug.Assert(char.IsSurrogatePair(slice[i], slice[i + 1]));
|
||||
rune = char.ConvertToUtf32(slice[i], slice[i + 1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
rune = slice[i];
|
||||
Debug.Assert(char.IsSurrogatePair(c, slice[i + 1]));
|
||||
rune = char.ConvertToUtf32(c, slice[i + 1]);
|
||||
i++;
|
||||
}
|
||||
|
||||
if (CharHelper.IsRightToLeft(rune))
|
||||
|
||||
Reference in New Issue
Block a user