Skip to content

Commit e099f02

Browse files
committed
#12 Fixed bug when handling tags with uppercase names.
1 parent 3305def commit e099f02

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

MwParserFromScratch/MwParserFromScratch.csproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,24 @@
33
<PropertyGroup>
44
<TargetFrameworks>netstandard1.1;net45</TargetFrameworks>
55
<GenerateDocumentationFile>true</GenerateDocumentationFile>
6-
<DebugType>full</DebugType>
6+
<DebugType>portable</DebugType>
77

88
<AssemblyName>MwParserFromScratch</AssemblyName>
99
<PackageId>CXuesong.MW.MwParserFromScratch</PackageId>
1010
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
1111
<PackageLicenseUrl>http://www.apache.org/licenses/LICENSE-2.0</PackageLicenseUrl>
1212
<PackageProjectUrl>https://github.com/CXuesong/MwParserFromScratch</PackageProjectUrl>
1313
<Authors>CXuesong</Authors>
14-
<Version>0.2.0</Version>
14+
<Version>0.2.1</Version>
1515
<PackageTags>MediaWiki Wikitext Parser</PackageTags>
1616
<RepositoryUrl>https://github.com/CXuesong/MwParserFromScratch</RepositoryUrl>
1717
<RepositoryType>Git</RepositoryType>
1818
<PackageReleaseNotes>See https://github.com/CXuesong/MwParserFromScratch/releases .</PackageReleaseNotes>
1919
<Description>A .NET Library for parsing wikitext into AST.</Description>
20-
<Copyright>Copyright (C) CXuesong, 2017</Copyright>
21-
<AssemblyVersion>0.2.0.0</AssemblyVersion>
20+
<Copyright>Copyright (C) CXuesong, 2018</Copyright>
21+
<AssemblyVersion>0.2.1.0</AssemblyVersion>
2222
<NeutralLanguage>en-us</NeutralLanguage>
23-
<FileVersion>0.2.0.0</FileVersion>
23+
<FileVersion>0.2.1.0</FileVersion>
2424
</PropertyGroup>
2525

2626
</Project>

MwParserFromScratch/ParserCore.Expandable.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,14 +233,14 @@ private TagNode ParseTag()
233233
private bool ParseUntilClosingTag(TagNode tag)
234234
{
235235
var normalizedTagName = tag.Name.ToLowerInvariant();
236-
var closingTagExpr = "</(" + Regex.Escape(normalizedTagName) + @")(\s*)>";
237236
Regex matcher;
238237
lock (closingTagMatcherCache)
239238
{
239+
var closingTagExpr = "(?i)</(" + Regex.Escape(normalizedTagName) + @")(\s*)>";
240240
matcher = closingTagMatcherCache.TryGetValue(normalizedTagName);
241241
if (matcher == null)
242242
{
243-
matcher = new Regex(closingTagExpr, RegexOptions.IgnoreCase);
243+
matcher = new Regex(closingTagExpr);
244244
closingTagMatcherCache.Add(normalizedTagName, matcher);
245245
}
246246
}
@@ -263,11 +263,11 @@ private bool ParseUntilClosingTag(TagNode tag)
263263
// do a simple check of whether there will be a possible closing tag ahead.
264264
if (!options.AllowClosingMarkInference && !matcher.IsMatch(fulltext, position)) return false;
265265
var ht = (HtmlTag) tag;
266-
ParseStart(closingTagExpr, false);
266+
ParseStart(matcher.ToString(), false);
267267
ht.Content = ParseWikitext();
268268
Accept();
269269
// Consume the tag closing.
270-
var closingTag = ConsumeToken(closingTagExpr);
270+
var closingTag = ConsumeToken(matcher.ToString());
271271
if (closingTag == null)
272272
{
273273
if (options.AllowClosingMarkInference)

UnitTestProject1/ExpandableParsingTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,14 @@ public void TestTag4()
122122
"P[Text<ref group='a'>reference</ref>]H2[Citations]P[<references group=a />]");
123123
}
124124

125+
[TestMethod]
126+
public void TestTag5()
127+
{
128+
var root = Utility.ParseAndAssert(
129+
"<div>test</DIV><ref>text</ reF>",
130+
"P[<div>P[test]</DIV>$<ref$>text$</ reF$>]");
131+
}
132+
125133
[TestMethod]
126134
public void TestHeading1()
127135
{

0 commit comments

Comments
 (0)