private string ParseName(string ruleSet, RulesDomModel codeModel) { return(_codeSettings.MethodSettings.NameFormat.Replace("[workflow]", _codeSettings.GetInputFile()) .Replace("[ruleSet]", codeModel.ParentRuleSet.Name) .Replace("[ruleName]", codeModel.Name)); }
private CodeTypeMember CreateMethod(string ruleSetName, RulesDomModel codeModel) { // Declare a new CodeEntryPointMethod var method = new CodeMemberMethod { Attributes = MemberAttributes.Public, Name = ParseName(ruleSetName, codeModel), ReturnType = new CodeTypeReference(_codeSettings.MethodSettings.Returns), }; string[] paramList = _codeSettings.MethodSettings.ParametersFormat.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); if (paramList.Length % 2 == 0) // even numbers { for (int i = 0; i < paramList.Length; i += 2) { method.Parameters.Add(new CodeParameterDeclarationExpression(paramList[i], paramList[i + 1])); } } // Specify that this method will be both static and public if (_codeSettings.IncludeComments && codeModel.Comments.Count > 0) { method.Comments.AddRange(codeModel.Comments.ToArray()); } var variableResult = new CodeVariableDeclarationStatement(new CodeTypeReference(_codeSettings.MethodSettings.Returns), "result", new CodeDefaultValueExpression( new CodeTypeReference(_codeSettings.MethodSettings.Returns))); method.Statements.Add(variableResult); var conditionStatement = new CodeConditionStatement(codeModel.Condition, codeModel.Then.ToArray(), codeModel.Else.ToArray()); method.Statements.Add(conditionStatement); method.Statements.Add( new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "result"))); return(method); }
private CodeNamespace GenerateSkeleton() { CodeNamespace codeNamespace = CreateNameSpace(_codeSettings.Namespace); CodeTypeDeclaration generatedClass = CreateClass(Settings.GetInputFile()); codeNamespace.Types.Add(generatedClass); for (int i = 0; i < Model.Count; i++) { if (Model[i] == null) { continue; } if (_codeSettings.CreateSubClass) { #region Sub Class CodeTypeDeclaration generatedSubClass = CreateClass(Model[i].Name); generatedClass.Members.Add(generatedSubClass); for (int x = 0; x < Model[i].MethodsRuleDom.Count; x++) { RulesDomModel codeModel = Model[i].MethodsRuleDom[x]; generatedSubClass.Members.Add(CreateMethod(Model[i].Name, codeModel)); } #endregion } else { for (int x = 0; x < Model[i].MethodsRuleDom.Count; x++) { RulesDomModel codeModel = Model[i].MethodsRuleDom[x]; generatedClass.Members.Add(CreateMethod(Model[i].Name, codeModel)); } } } return(codeNamespace); }