Skip to content

Commit

Permalink
#12 Fixed bug when handling tags with uppercase names.
Browse files Browse the repository at this point in the history
  • Loading branch information
CXuesong committed Apr 7, 2018
1 parent 3305def commit e099f02
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 9 deletions.
10 changes: 5 additions & 5 deletions MwParserFromScratch/MwParserFromScratch.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,24 @@
<PropertyGroup>
<TargetFrameworks>netstandard1.1;net45</TargetFrameworks>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<DebugType>full</DebugType>
<DebugType>portable</DebugType>

<AssemblyName>MwParserFromScratch</AssemblyName>
<PackageId>CXuesong.MW.MwParserFromScratch</PackageId>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageLicenseUrl>http://www.apache.org/licenses/LICENSE-2.0</PackageLicenseUrl>
<PackageProjectUrl>https://github.com/CXuesong/MwParserFromScratch</PackageProjectUrl>
<Authors>CXuesong</Authors>
<Version>0.2.0</Version>
<Version>0.2.1</Version>
<PackageTags>MediaWiki Wikitext Parser</PackageTags>
<RepositoryUrl>https://github.com/CXuesong/MwParserFromScratch</RepositoryUrl>
<RepositoryType>Git</RepositoryType>
<PackageReleaseNotes>See https://github.com/CXuesong/MwParserFromScratch/releases .</PackageReleaseNotes>
<Description>A .NET Library for parsing wikitext into AST.</Description>
<Copyright>Copyright (C) CXuesong, 2017</Copyright>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<Copyright>Copyright (C) CXuesong, 2018</Copyright>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<NeutralLanguage>en-us</NeutralLanguage>
<FileVersion>0.2.0.0</FileVersion>
<FileVersion>0.2.1.0</FileVersion>
</PropertyGroup>

</Project>
8 changes: 4 additions & 4 deletions MwParserFromScratch/ParserCore.Expandable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -233,14 +233,14 @@ private TagNode ParseTag()
private bool ParseUntilClosingTag(TagNode tag)
{
var normalizedTagName = tag.Name.ToLowerInvariant();
var closingTagExpr = "</(" + Regex.Escape(normalizedTagName) + @")(\s*)>";
Regex matcher;
lock (closingTagMatcherCache)
{
var closingTagExpr = "(?i)</(" + Regex.Escape(normalizedTagName) + @")(\s*)>";
matcher = closingTagMatcherCache.TryGetValue(normalizedTagName);
if (matcher == null)
{
matcher = new Regex(closingTagExpr, RegexOptions.IgnoreCase);
matcher = new Regex(closingTagExpr);
closingTagMatcherCache.Add(normalizedTagName, matcher);
}
}
Expand All @@ -263,11 +263,11 @@ private bool ParseUntilClosingTag(TagNode tag)
// do a simple check of whether there will be a possible closing tag ahead.
if (!options.AllowClosingMarkInference && !matcher.IsMatch(fulltext, position)) return false;
var ht = (HtmlTag) tag;
ParseStart(closingTagExpr, false);
ParseStart(matcher.ToString(), false);
ht.Content = ParseWikitext();
Accept();
// Consume the tag closing.
var closingTag = ConsumeToken(closingTagExpr);
var closingTag = ConsumeToken(matcher.ToString());
if (closingTag == null)
{
if (options.AllowClosingMarkInference)
Expand Down
8 changes: 8 additions & 0 deletions UnitTestProject1/ExpandableParsingTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,14 @@ public void TestTag4()
"P[Text<ref group='a'>reference</ref>]H2[Citations]P[<references group=a />]");
}

[TestMethod]
public void TestTag5()
{
var root = Utility.ParseAndAssert(
"<div>test</DIV><ref>text</ reF>",
"P[<div>P[test]</DIV>$<ref$>text$</ reF$>]");
}

[TestMethod]
public void TestHeading1()
{
Expand Down

0 comments on commit e099f02

Please sign in to comment.