Fixed logic to properly handle curly braces next to links (Transitions or Referenced Objects)

This commit is contained in:
Rich 2014-03-27 14:07:15 +00:00
parent 8c9b73902c
commit 00b6045076

View File

@ -1003,14 +1003,10 @@ namespace Volian.Controls.Library
case '}': case '}':
return token; return token;
case 'v': // save link hidden info case 'v': // save link hidden info
if (Regex.IsMatch(token, @"^\\v0? ?$")) return token; // comment part of link if (token == "\\viewkind4 ") break;
// end comment may end in space or may end in '\' if another rtf command, if (Regex.IsMatch(token, @"^\\v0? ?$"))
// or may end at end of string. First check for space, keep it in string return token; // comment part of link
// if it is there. _MyLog.WarnFormat("<<<ERROR>>>\r\n==> Token including Comment not processed '{0}'", token);
//if (Regex.IsMatch(token, @"\\v0 "))
// return token;
//if (Regex.IsMatch(token, @"\\v0"))
// return token;
break; break;
case 'l': case 'l':
if (Regex.IsMatch(token, @"^\\line ?$")) return token; if (Regex.IsMatch(token, @"^\\line ?$")) return token;
@ -1038,12 +1034,13 @@ namespace Volian.Controls.Library
{ {
// replace \{ & \} with (![ & (!] respectively and then redo at end. The curly braces // replace \{ & \} with (![ & (!] respectively and then redo at end. The curly braces
// are rtf so were getting removed and/or not handled correctly. // are rtf so were getting removed and/or not handled correctly.
string retval = rtf.Replace(@"\{", @"(!["); string retval = rtf.Replace(@"\{", @" (![");
retval = retval.Replace(@"\}", @"(!]"); retval = retval.Replace(@"\}", @" (!]");
// remove carriage return/newlines after \par commands (these are introduced by rtb // remove carriage return/newlines after \par commands (these are introduced by rtb
// for hard returns, goes into rtb as \par and comes out as \par\r\n): // for hard returns, goes into rtb as \par and comes out as \par\r\n):
retval = Regex.Replace(retval, @"\\par\r\n(?!\\)", "\\par "); retval = Regex.Replace(retval, @"\\par\r\n(?!\\)", "\\par ");
retval = retval.Replace("\\v0\r\n", "\\v0 "); // Replace Carriage Return and Newline after comment
retval = Regex.Replace(retval, @"[\r\n]", "", RegexOptions.Singleline); // Strip Carriage Returns and Newlines retval = Regex.Replace(retval, @"[\r\n]", "", RegexOptions.Singleline); // Strip Carriage Returns and Newlines
retval = Regex.Replace(retval, @"^\{(.*)\}$", "$1", RegexOptions.Singleline); // Strip Opening and Closing Braces retval = Regex.Replace(retval, @"^\{(.*)\}$", "$1", RegexOptions.Singleline); // Strip Opening and Closing Braces
retval = Regex.Replace(retval, @"\{[^{]*?\}", "", RegexOptions.Singleline); // Strip Clauses - remove anything from curly braces retval = Regex.Replace(retval, @"\{[^{]*?\}", "", RegexOptions.Singleline); // Strip Clauses - remove anything from curly braces
@ -1057,8 +1054,8 @@ namespace Volian.Controls.Library
if (retval.Length == 0) return ""; if (retval.Length == 0) return "";
if (retval.EndsWith(@"\v")) retval = retval.Remove(retval.Length - 2, 2); if (retval.EndsWith(@"\v")) retval = retval.Remove(retval.Length - 2, 2);
retval = _MyItemInfo.RemoveRtfStyles(retval); // RemoveRtfStyles(retval); retval = _MyItemInfo.RemoveRtfStyles(retval); // RemoveRtfStyles(retval);
retval = retval.Replace(@"(![", @"\{"); retval = retval.Replace(@" (![", @"\{");
retval = retval.Replace(@"(!]", @"\}"); retval = retval.Replace(@" (!]", @"\}");
retval = retval.TrimEnd(' '); retval = retval.TrimEnd(' ');
return retval; return retval;
} }
@ -1067,8 +1064,8 @@ namespace Volian.Controls.Library
{ {
// replace \{ & \} with (![ & (!] respectively and then redo at end. The curly braces // replace \{ & \} with (![ & (!] respectively and then redo at end. The curly braces
// are rtf so were getting removed and/or not handled correctly. // are rtf so were getting removed and/or not handled correctly.
string retval = rtf.Replace(@"\{", @"(!["); string retval = rtf.Replace(@"\{", @" (![");
retval = retval.Replace(@"\}", @"(!]"); retval = retval.Replace(@"\}", @" (!]");
// For hardspaces, the windows richtextbox does some 'quirky' things: // For hardspaces, the windows richtextbox does some 'quirky' things:
// A unicode representation of \u160? is sent INTO the rtb. Coming out, // A unicode representation of \u160? is sent INTO the rtb. Coming out,
@ -1083,6 +1080,7 @@ namespace Volian.Controls.Library
retval = Regex.Replace(retval, @"\\par\r\n(?!\\)", "\\par "); retval = Regex.Replace(retval, @"\\par\r\n(?!\\)", "\\par ");
//retval = Regex.Replace(retval, @"\\par\r\n(?=\\)", "\\par"); //retval = Regex.Replace(retval, @"\\par\r\n(?=\\)", "\\par");
retval = retval.Replace("\\v0\r\n", "\\v0 "); // Replace Carriage Return and Newline after comment
retval = Regex.Replace(retval, @"[\r\n]", "", RegexOptions.Singleline); // Strip Carriage Returns and Newlines retval = Regex.Replace(retval, @"[\r\n]", "", RegexOptions.Singleline); // Strip Carriage Returns and Newlines
retval = Regex.Replace(retval, @"^\{(.*)\}$", "$1", RegexOptions.Singleline); // Strip Opening and Closing Braces retval = Regex.Replace(retval, @"^\{(.*)\}$", "$1", RegexOptions.Singleline); // Strip Opening and Closing Braces
retval = Regex.Replace(retval, @"\{[^{]*?\}", "", RegexOptions.Singleline); // Strip Clauses - remove anything from curly braces retval = Regex.Replace(retval, @"\{[^{]*?\}", "", RegexOptions.Singleline); // Strip Clauses - remove anything from curly braces
@ -1117,8 +1115,8 @@ namespace Volian.Controls.Library
//if (itmInfo != null) //if (itmInfo != null)
// retval = StaticRemoveRtfStyles(retval, itmInfo); // retval = StaticRemoveRtfStyles(retval, itmInfo);
retval = retval.Replace(@"(![", @"\{"); retval = retval.Replace(@" (![", @"\{");
retval = retval.Replace(@"(!]", @"\}"); retval = retval.Replace(@" (!]", @"\}");
retval = retval.TrimEnd(' '); retval = retval.TrimEnd(' ');
// the indent character was translated in the richtextbox, change it back: // the indent character was translated in the richtextbox, change it back: