diff --git a/AssemblyVersion.cs b/AssemblyVersion.cs index 02c9997..dca1cb1 100644 --- a/AssemblyVersion.cs +++ b/AssemblyVersion.cs @@ -16,5 +16,5 @@ using System.Reflection; // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("3.0.1.467")] -[assembly: AssemblyFileVersion("3.0.1.467")] +[assembly: AssemblyVersion("3.0.1.468")] +[assembly: AssemblyFileVersion("3.0.1.468")] diff --git a/Core/Formatter.cs b/Core/Formatter.cs index 800687d..069cb61 100644 --- a/Core/Formatter.cs +++ b/Core/Formatter.cs @@ -53,6 +53,7 @@ namespace ScrewTurn.Wiki { private static readonly Regex IndentRegex = new Regex(@"(?<=(\n|^))\:+(\ )?.+?\n", RegexOptions.Compiled); private static readonly Regex EscRegex = new Regex(@"\(.|\n|\r)*?\<\/esc\>", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Singleline); private static readonly Regex SignRegex = new Regex(@"§§\(.+?\)§§", RegexOptions.Compiled | RegexOptions.IgnoreCase); + // This regex is duplicated in Edit.aspx.cs private static readonly Regex FullCodeRegex = new Regex(@"@@.+?@@", RegexOptions.Compiled | RegexOptions.Singleline); //private static readonly Regex UsernameRegex = new Regex(@"\{username\}", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); private static readonly Regex JavascriptRegex = new Regex(@"\.*?\<\/script\>", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.CultureInvariant); diff --git a/WebApplication/Edit.aspx.cs b/WebApplication/Edit.aspx.cs index c6e1e08..cf21cb1 100644 --- a/WebApplication/Edit.aspx.cs +++ b/WebApplication/Edit.aspx.cs @@ -386,6 +386,9 @@ namespace ScrewTurn.Wiki { return buffer.ToString().Trim('-'); } + // This regex is duplicated from Formatter.cs + private static readonly Regex FullCodeRegex = new Regex(@"@@.+?@@", RegexOptions.Compiled | RegexOptions.Singleline); + /// /// Finds the start and end positions of a section of the content. /// @@ -395,6 +398,15 @@ namespace ScrewTurn.Wiki { /// The length of the section. /// The anchor ID of the section. private static void ExtractSection(string content, int section, out int start, out int len, out string anchor) { + // HACK: @@...@@ escapes headers: must reproduce behavior here + Match m = FullCodeRegex.Match(content); + while(m.Success) { + string newContent = m.Value.Replace("=", "$"); // Do not alter positions + content = content.Remove(m.Index, m.Length); + content = content.Insert(m.Index, newContent); + m = FullCodeRegex.Match(content, m.Index + m.Length - 1); + } + List hPos = Formatter.DetectHeaders(content); start = 0; len = content.Length;