public string SubstituteCode(string source)
{
var codeDataGeneratorParams = new List<CodeDataGeneratorParam>();
var matches = Regex.Matches(source, CodeKeyBeginPattern);
foreach (Match match in matches)
{
var endMatch = Regex.Unescape(CodeKeyEndPattern.Replace(@"(\w+)", match.Groups[1].Value));
codeDataGeneratorParams.Add(new CodeDataGeneratorParam(match.Value, endMatch));
}
var result = new StringBuilder(source);
foreach (var p in codeDataGeneratorParams)
{
var code = SearchCode(p);
code = RemoveIgnoreSection(code);
SubstituteParam(result, new CodeDataGeneratorParam(p.KeyBegin, p.KeyEnd, code, false));
}
return result.ToString();
}