public CodeGenDialog(TemplateInput input) { InitializeComponent(); templateInput = input; runEngine(input, Resources.Template_CS); }
private void runEngine(TemplateInput input, string template) { TemplateEngine engine = new TemplateEngine(); engine.Template = template; string output = engine.Process(input); txtOutput.Text = output; }
private string ProcessForEachGroup(TemplateInput input, string output) { //regex for group name: \(\?<(?<Groupname>\w+?)> //regex for FOREACH_GROUP body: \$FOREACH-GROUP\$(?<middle>.+?)\$END-FOREACH-GROUP\$ const string FOREACH_GROUP_REGEX = @"\$FOREACH-GROUP\$(?<body>.+?)\$END-FOREACH-GROUP\$"; const string GROUPNAME_REGEX = @"\(\?<(?<GroupName>\w+?)>"; MatchCollection groupName = Regex.Matches(input.Pattern,GROUPNAME_REGEX,RegexOptions.Singleline); string foreachGroupBody = Regex.Match(template, FOREACH_GROUP_REGEX,RegexOptions.Singleline).Groups["body"].Value; if (groupName.Count > 0) { string forEachGroupBodyInnerTemplate = foreachGroupBody; string tempBody = string.Empty; foreach (Match match in groupName) { tempBody += forEachGroupBodyInnerTemplate.Replace("$GROUPNAME$", match.Groups["GroupName"].Value); } output = Regex.Replace(output, FOREACH_GROUP_REGEX, tempBody, RegexOptions.Singleline); } else { output = Regex.Replace(output, foreachGroupBody, string.Empty, RegexOptions.Singleline); } return output; }
private string GetRegexOptionsStringForVB(TemplateInput input) { string regexOptionsString = input.RegexOptions.ToString(); regexOptionsString = regexOptionsString.Replace(", ", " Or RegexOptions."); regexOptionsString = "RegexOptions." + regexOptionsString; return regexOptionsString; }
private string ProcessForEachGroup(TemplateInput input, string output) { //regex for group name: \(\?<(?<Groupname>\w+?)> //regex for FOREACH_GROUP body: \$FOREACH-GROUP\$(?<middle>.+?)\$END-FOREACH-GROUP\$ const string FOREACH_GROUP_REGEX = @"\$FOREACH-GROUP\$(?<body>.+?)\$END-FOREACH-GROUP\$"; const string GROUPNAME_REGEX = @"\(\?<(?<GroupName>\w+?)>"; MatchCollection groupName = Regex.Matches(input.Pattern, GROUPNAME_REGEX, RegexOptions.Singleline); string foreachGroupBody = Regex.Match(template, FOREACH_GROUP_REGEX, RegexOptions.Singleline).Groups["body"].Value; if (groupName.Count > 0) { string forEachGroupBodyInnerTemplate = foreachGroupBody; string tempBody = string.Empty; foreach (Match match in groupName) { tempBody += forEachGroupBodyInnerTemplate.Replace("$GROUPNAME$", match.Groups["GroupName"].Value); } output = Regex.Replace(output, FOREACH_GROUP_REGEX, tempBody, RegexOptions.Singleline); } else { output = Regex.Replace(output, foreachGroupBody, string.Empty, RegexOptions.Singleline); } return(output); }
private string GetRegexOptionsStringForVB(TemplateInput input) { string regexOptionsString = input.RegexOptions.ToString(); regexOptionsString = regexOptionsString.Replace(", ", " Or RegexOptions."); regexOptionsString = "RegexOptions." + regexOptionsString; return(regexOptionsString); }
public string Process(TemplateInput input) { if( template!=string.Empty) { string output; output =template.Replace("$REGEX$",input.Pattern); output =output.Replace("$INPUT$",input.Input); string regexOptionsString = GetRegexOptionsStringForCSharp(input); output = output.Replace("$REGEXOPTIONS_CS$", regexOptionsString); string regexOptionsStringVB = GetRegexOptionsStringForVB(input); output = output.Replace("$REGEXOPTIONS_VB$", regexOptionsStringVB); output = ProcessForEachGroup(input, output); output = output.Replace("$FOREACH-GROUP$", string.Empty); output = output.Replace("$END-FOREACH-GROUP$", string.Empty); output = output.Replace("$GROUPNAME$", string.Empty); return output; } return string.Empty; }
public string Process(TemplateInput input) { if (template != string.Empty) { string output; output = template.Replace("$REGEX$", input.Pattern); output = output.Replace("$INPUT$", input.Input); string regexOptionsString = GetRegexOptionsStringForCSharp(input); output = output.Replace("$REGEXOPTIONS_CS$", regexOptionsString); string regexOptionsStringVB = GetRegexOptionsStringForVB(input); output = output.Replace("$REGEXOPTIONS_VB$", regexOptionsStringVB); output = ProcessForEachGroup(input, output); output = output.Replace("$FOREACH-GROUP$", string.Empty); output = output.Replace("$END-FOREACH-GROUP$", string.Empty); output = output.Replace("$GROUPNAME$", string.Empty); return(output); } return(string.Empty); }
private void toolStripButton1_Click(object sender, EventArgs e) { TemplateInput input = new TemplateInput(); input.Pattern = results.RegexText; input.RegexOptions = results.RegXOptions; input.Input = results.SampleText; CodeGenDialog dlg = new CodeGenDialog(input); dlg.ShowDialog(this); }