private string BlockQuoteEvaluator(Match match)
{
string bq = match.Groups[1].Value;
bq = Regex.Replace(bq, @"^[ ]*>[ ]?", "", RegexOptions.Multiline); // trim one level of quoting
bq = Regex.Replace(bq, @"^[ ]+$", "", RegexOptions.Multiline); // trim whitespace-only lines
bq = RunBlockGamut(bq); // recurse
bq = Regex.Replace(bq, @"^", " ", RegexOptions.Multiline);
// These leading spaces screw with <pre> content, so we need to fix that:
bq = Regex.Replace(bq, @"(\s*<pre>.+?</pre>)", new MatchEvaluator(BlockQuoteEvaluator2), RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);
bq = string.Format("<blockquote>\n{0}\n</blockquote>", bq);
string key = GetHashKey(bq, isHtmlBlock: true);
_htmlBlocks[key] = bq;
return "\n\n" + key + "\n\n";
}