Esempio n. 1
0
 private string ParseName(string ruleSet, RulesDomModel codeModel)
 {
     return(_codeSettings.MethodSettings.NameFormat.Replace("[workflow]",
                                                            _codeSettings.GetInputFile())
            .Replace("[ruleSet]", codeModel.ParentRuleSet.Name)
            .Replace("[ruleName]", codeModel.Name));
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }