diff --git a/Core-Tests/FormatterTests.cs b/Core-Tests/FormatterTests.cs index 68092b7..8990644 100644 --- a/Core-Tests/FormatterTests.cs +++ b/Core-Tests/FormatterTests.cs @@ -29,7 +29,7 @@ second line"; private MockRepository mocks; [Test] - //[TestCase("{wikititle}","Title")] + [TestCase("{wikititle}","Title\n")] [TestCase("@@rigatesto1\r\nriga2@@","
rigatesto1\r\nriga2
\n")] [TestCase(Input,ExpectedOutput)] public void Format(string input, string output) { @@ -51,6 +51,7 @@ second line"; ISettingsStorageProviderV30 settingsProvider = mocks.StrictMock(); Expect.Call(settingsProvider.GetSetting("ProcessSingleLineBreaks")).Return("false").Repeat.Any(); + Expect.Call(settingsProvider.GetSetting("WikiTitle")).Return("Title").Repeat.Any(); Collectors.SettingsProvider = settingsProvider; diff --git a/Core/Formatter.cs b/Core/Formatter.cs index b9dd305..846e881 100644 --- a/Core/Formatter.cs +++ b/Core/Formatter.cs @@ -38,8 +38,8 @@ namespace ScrewTurn.Wiki { private static readonly Regex PreRegex = new Regex(@"\{\{\{\{.+?\}\}\}\}", RegexOptions.Compiled | RegexOptions.Singleline); private static readonly Regex BoxRegex = new Regex(@"\(\(\(.+?\)\)\)", RegexOptions.Compiled | RegexOptions.Singleline); private static readonly Regex ExtendedUpRegex = new Regex(@"\{up((\:|\().+?)?\}", RegexOptions.Compiled | RegexOptions.IgnoreCase); - private static readonly Regex SpecialTagRegex = new Regex(@"\{(wikititle|wikiversion|mainurl|rsspage|themepath|clear|br|top|searchbox|pagecount|pagecount\(\*\)|categories|cloud|orphans|wanted|namespacelist)\}", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); - private static readonly Regex SpecialTagBR = new Regex(@"\{(br)\}", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); + private static readonly Regex SpecialTagRegex = new Regex(@"\{(wikititle|wikiversion|mainurl|rsspage|themepath|clear|top|searchbox|pagecount|pagecount\(\*\)|categories|cloud|orphans|wanted|namespacelist)\}", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); + private static readonly Regex SpecialTagBRRegex = new Regex(@"\{(br)\}", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); private static readonly Regex Phase3SpecialTagRegex = new Regex(@"\{(username|pagename|loginlogout|namespace|namespacedropdown|incoming|outgoing)\}", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); private static readonly Regex RecentChangesRegex = new Regex(@"\{recentchanges(\(\*\))?\}", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); private static readonly Regex ListRegex = new Regex(@"(?<=(\n|^))((\*|\#)+(\ )?.+?\n)+((?=\n)|\z)", RegexOptions.Compiled | RegexOptions.Singleline); // Singleline to matche list elements on multiple lines @@ -265,7 +265,7 @@ namespace ScrewTurn.Wiki { match = ExtendedUpRegex.Match(sb.ToString(), end); } - match = SpecialTagBR.Match(sb.ToString()); // solved by introducing a new regex call SpecialTagBR + match = SpecialTagBRRegex.Match(sb.ToString()); // solved by introducing a new regex call SpecialTagBR while(match.Success) { if(!IsNoWikied(match.Index, noWikiBegin, noWikiEnd, out end)) { sb.Remove(match.Index, match.Length); @@ -278,7 +278,7 @@ namespace ScrewTurn.Wiki { } } ComputeNoWiki(sb.ToString(), ref noWikiBegin, ref noWikiEnd); - match = SpecialTagRegex.Match(sb.ToString(), end); + match = SpecialTagBRRegex.Match(sb.ToString(), end); } if(!bareBones) { diff --git a/Core/ReverseFormatter.cs b/Core/ReverseFormatter.cs index 71d67b5..0eefe9f 100644 --- a/Core/ReverseFormatter.cs +++ b/Core/ReverseFormatter.cs @@ -148,6 +148,7 @@ namespace ScrewTurn.Wiki { /// The corrispondent WikiMarkup Text private static string processChild(XmlNodeList nodes) { string result = ""; + bool isImage = false; foreach(XmlNode node in nodes) { bool anchor = false; if(node.NodeType == XmlNodeType.Text) { @@ -222,7 +223,6 @@ namespace ScrewTurn.Wiki { break; case "table": string image = ""; - bool isImage = false; foreach(XmlAttribute attName in node.Attributes) { if(attName.Value.ToString() == "imageauto") { isImage = true; @@ -231,6 +231,7 @@ namespace ScrewTurn.Wiki { } if(isImage) { result += image; + isImage = false; break; } else result += processChild(node.ChildNodes); @@ -242,7 +243,11 @@ namespace ScrewTurn.Wiki { result += processChild(node.ChildNodes); break; case "td": - result += processChild(node.ChildNodes); + if(isImage) { + result += processChildImage(node.ChildNodes); + } + else + result += processChild(node.ChildNodes); break; case "ol": result += processList(node.ChildNodes, "#"); @@ -281,8 +286,8 @@ namespace ScrewTurn.Wiki { } if(attName.Value.ToString() == "imageright") result += "\r\n" + "[imageright" + processChildImage(node.ChildNodes) + "]\r\n"; - if(attName.Value.ToString() == "imageauto") - result += "\r\n" + "[imageauto" + processChildImage(node.ChildNodes) + "]\r\n"; + if(attName.Value.ToString() == "image") + result += "\r\n" + "[image" + processChildImage(node.ChildNodes) + "]\r\n"; } } else