Recognize and strip mml from the new man4 documentation.

This commit is contained in:
the_fiddler 2010-11-21 14:24:05 +00:00
parent fa76c13e17
commit 598ec9b570

View file

@ -8,7 +8,8 @@ namespace Bind
{ {
class DocProcessor class DocProcessor
{ {
static readonly Regex remove_mathml = new Regex(@"<(mml:math)[^>]*?>(?:.|\n)*?</\s*\1\s*>", static readonly Regex remove_mathml = new Regex(
@"<(mml:math|inlineequation)[^>]*?>(?:.|\n)*?</\s*\1\s*>",
RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace); RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
static readonly XslCompiledTransform xslt = new XslCompiledTransform(); static readonly XslCompiledTransform xslt = new XslCompiledTransform();
@ -44,11 +45,25 @@ namespace Bind
int equation = removed.IndexOf("eqn"); int equation = removed.IndexOf("eqn");
if (equation > 0) if (equation > 0)
{ {
Text = Text.Insert(m.Index, // Find the start and end of the equation string
"<![CDATA[" + int eqn_start = equation + 4;
removed.Substring(equation + 4, removed.IndexOf(":-->") - equation - 4) + int eqn_end = removed.IndexOf(":-->") - equation - 4;
"]]>"); if (eqn_end < 0)
{
// Note: a few docs from man4 delimit eqn end with ": -->"
eqn_end = removed.IndexOf(": -->") - equation - 4;
}
if (eqn_end < 0)
{
Console.WriteLine("[Warning] Failed to find equation for mml.");
goto next;
}
string eqn_substring = removed.Substring(eqn_start, eqn_end);
Text = Text.Insert(m.Index, "<![CDATA[" + eqn_substring + "]]>");
} }
next:
m = remove_mathml.Match(Text); m = remove_mathml.Match(Text);
} }