public static bool Attribute_AliasDefinition(string attributeCode, out string attrinuteName, out string mirrorParameter1, out string mirrorClass, out string mirrorMethodName)
        {
            List <string> parameters;

            ClassNTAttributes_Methods.Attribute_Parts(attributeCode, out attrinuteName, out parameters);

            // Default values
            mirrorParameter1 = null;
            mirrorClass      = null;
            mirrorMethodName = null;

            if (BlueprintMethodRuleAlias(attrinuteName) == false)
            {
                return(false);                                                   //<================================================
            }
            // Parse the parameters
            foreach (string parameter in parameters)
            {
                if (parameter.Contains("MirrorParameter1"))
                {
                    mirrorParameter1 = parameter.zvar_Value("=").zRemove_DoubleQuotes();
                }
                if (parameter.Contains("MirrorClass"))
                {
                    mirrorClass = parameter.zvar_Value("=").zRemove_DoubleQuotes();
                }
                if (parameter.Contains("MirrorMethodName"))
                {
                    mirrorMethodName = parameter.zvar_Value("=").zRemove_DoubleQuotes();
                }
            }
            return(true);
        }
Exemplo n.º 2
0
        public static bool Method_Attributes(string attributeCode, out string name, out bool ignore, out string shortcutClassName, out string shortcutMethodName)
        {
            List <string> parameters;

            ClassNTAttributes_Methods.Attribute_Parts(attributeCode, out name, out parameters);

            // Default values
            ignore             = false;
            shortcutClassName  = null;
            shortcutMethodName = null;

            if (BlueprintMethodRule(name) == false)
            {
                return(false);                                     //<================================================
            }
            // Parse the parameters

            foreach (string parameter in parameters)
            {
                if (parameter.Contains("Ignore"))
                {
                    ignore = parameter.zvar_Value("=").zTo_Bool();
                }
                if (parameter.Contains("ShortcutClassName"))
                {
                    shortcutClassName = parameter.zvar_Value("=").zRemove_DoubleQuotes();
                }
                if (parameter.Contains("ShortcutMethodName"))
                {
                    shortcutMethodName = parameter.zvar_Value("=").zRemove_DoubleQuotes();
                }
            }

            return(true);
        }
Exemplo n.º 3
0
        public static ClassNTAttribute_ Create(string attributeStr)
        {
            var           result = new ClassNTAttribute_();
            List <string> parameterList;

            ClassNTAttributes_Methods.Attribute_Parts(attributeStr, out result.AttributeName, out parameterList);
            foreach (string parameterStr in parameterList)
            {
                var parameter = ClassNTAttribute_Parameter_.Create(result.AttributeName, parameterStr);
                result.Parameters.Add(parameter);
            }
            return(result);
        }
Exemplo n.º 4
0
        public static void Attribute_Parts_Test()
        {
            string        name;
            List <string> parameters;

            #region Test1:  [Test]
            // ==============================================================
            var attributeCode1 = "[Test]";
            ClassNTAttributes_Methods.Attribute_Parts(attributeCode1, out name, out parameters);
            Assert.Equal("Test", name);
            Assert.Equal(0, parameters.Count);
            #endregion

            #region Test2: [TestedMethod_("Attribute_Parts()")]
            // =============================================================
            var attributeCode2 = "[TestedMethod_(\"Attribute_Parts()\")]";
            ClassNTAttributes_Methods.Attribute_Parts(attributeCode2, out name, out parameters);
            Assert.Equal("TestedMethod_", name);
            Assert.Equal("\"Attribute_Parts()\"", parameters[0]);
            Assert.Equal(1, parameters.Count);
            #endregion

            #region Test3: [ActiveTemplate_(Description = "This code will link different classes into a CTI network", Parameter1_Caption = "Class typename:\", Parameter1_Name= \"ClassHeading_NewTypeName\", Parameter1_Value= enATemplate_Value.Value_FromClipboard, Parameter2_Caption = "Property name:", Parameter2_Name = "NewTypeName")]
            // =======================================================
            // [ActiveTemplate_(Description = "This code will link different classes into a CTI network",
            // Parameter1_Caption = "Class typename:", Parameter1_Name= "ClassHeading_NewTypeName", Parameter1_Value= enATemplate_Value.Value_FromClipboard,
            // Parameter2_Caption = "Property name:", Parameter2_Name = "NewTypeName")]
            var attLine = "[ActiveTemplate_(Description = \"This code will link different classes into a CTI network\", Parameter1_Caption = \"Class typename:\", Parameter1_Name= \"ClassHeading_NewTypeName\", Parameter1_Value= enATemplate_Value.Value_FromClipboard, Parameter2_Caption = \"Property name:\", Parameter2_Name = \"NewTypeName\")]";
            ClassNTAttributes_Methods.Attribute_Parts(attLine, out name, out parameters);
            Assert.Equal("ActiveTemplate_", name);
            Assert.Equal("Description = \"This code will link different classes into a CTI network\"", parameters[0]);
            Assert.Equal("Parameter1_Caption = \"Class typename:\"", parameters[1]);
            Assert.Equal("Parameter1_Name= \"ClassHeading_NewTypeName\"", parameters[2]);
            Assert.Equal("Parameter1_Value= enATemplate_Value.Value_FromClipboard", parameters[3]);
            Assert.Equal("Parameter2_Caption = \"Property name:\"", parameters[4]);
            Assert.Equal("Parameter2_Name = \"NewTypeName\"", parameters[5]);
            Assert.Equal(6, parameters.Count);
            #endregion

            #region Test4: Illigal input "", "[bla", "bla]"
            Assert.Throws <InvalidOperationException>(() => ClassNTAttributes_Methods.Attribute_Parts("", out name, out parameters));
            Assert.Throws <InvalidOperationException>(() => ClassNTAttributes_Methods.Attribute_Parts("[bla", out name, out parameters));
            Assert.Throws <InvalidOperationException>(() => ClassNTAttributes_Methods.Attribute_Parts("bla]", out name, out parameters));

            #endregion
        }
Exemplo n.º 5
0
        public static bool BlueprintRule_Attributes(string attributeCode, out string name, out List <string> parameters, out enBlueprint_ClassNetworkType classNetworkType,
                                                    out string ignore1, out string ignore2, out string ignore3, out string ignore4)
        {
            ClassNTAttributes_Methods.Attribute_Parts(attributeCode, out name, out parameters);

            // Default values
            classNetworkType = enBlueprint_ClassNetworkType.Undefined;
            ignore1          = null;
            ignore2          = null;
            ignore3          = null;
            ignore4          = null;

            if (BlueprintRuleClass(name) == false)
            {
                return(false);                                    //<================================================
            }
            // Test the parameters
            // The first parameter is the enBlueprintClassNetworkType
            var parm1 = parameters[0];

            classNetworkType = parm1.zEnum_To_EnumValue <enBlueprint_ClassNetworkType>();
            //var value = parm1.zvar_Value(".");
            //classNetworkType = value.zEnum_To_EnumValue<enBlueprintClassNetworkType>();

            foreach (string parameter in parameters)
            {
                if (parameter.Contains("Ignore_Namespace1"))
                {
                    ignore1 = parameter.zvar_Value("=").zRemove_DoubleQuotes();
                }
                if (parameter.Contains("Ignore_Namespace2"))
                {
                    ignore2 = parameter.zvar_Value("=").zRemove_DoubleQuotes();
                }
                if (parameter.Contains("Ignore_Namespace3"))
                {
                    ignore3 = parameter.zvar_Value("=").zRemove_DoubleQuotes();
                }
                if (parameter.Contains("Ignore_Namespace4"))
                {
                    ignore4 = parameter.zvar_Value("=").zRemove_DoubleQuotes();
                }
            }
            return(true);
        }
Exemplo n.º 6
0
        public static void Attributes_FromCode_Test()
        {
            var           source = new List <string>();
            List <string> attributeLines;

            #region Test1:  [Test], [Pure]
            // =======================================================
            source.Add("        [Test]");
            source.Add("        [Pure]");
            attributeLines = ClassNTAttributes_Methods.Attributes_FromCode(source);
            Assert.Equal("[Test]", attributeLines[0]);
            Assert.Equal("[Pure]", attributeLines[1]);
            Assert.Equal(2, attributeLines.Count);
            #endregion

            #region Test2: [Fact, Test_Method("Attributes_FromCode()")]
            // =======================================================
            source.Clear();
            source.Add("        [Fact, Test_Method(\"Attributes_FromCode()\")]");
            source.Add("        [BlueprintCodeInjection_(typeof(Controller_BlueprintLogger), true)]");
            attributeLines = ClassNTAttributes_Methods.Attributes_FromCode(source);
            Assert.Equal(3, attributeLines.Count);
            Assert.Equal("[Fact]", attributeLines[0]);
            Assert.Equal("[Test_Method(\"Attributes_FromCode()\")]", attributeLines[1]);
            Assert.Equal("[BlueprintCodeInjection_(typeof(Controller_BlueprintLogger), true)]", attributeLines[2]);
            #endregion

            #region Test3: [Test, TestedMethod("Key_Add()"), TestedMethod("Key_Find()"), TestedMethod("Key_Remove()")]
            // =======================================================
            // [Pure]
            // [Category("Appearance")]
            // [Description("Set Cancel Visible property")]
            // [Test, TestedMethod("Key_Add()"), TestedMethod("Key_Find()"), TestedMethod("Key_Remove()")]
            source.Clear();
            source.Add("        [Pure]");
            source.Add("        [Category(\"Appearance\")]");
            source.Add("        [Description(\"Set Cancel Visible property\")]");
            source.Add("        [Test, TestedMethod(\"Key_Add()\"), TestedMethod(\"Key_Find()\"), TestedMethod(\"Key_Remove()\")]");
            attributeLines = ClassNTAttributes_Methods.Attributes_FromCode(source);
            Assert.Equal("[Pure]", attributeLines[0]);
            Assert.Equal("[Category(\"Appearance\")]", attributeLines[1]);
            Assert.Equal("[Description(\"Set Cancel Visible property\")]", attributeLines[2]);
            Assert.Equal("[Test]", attributeLines[3]);
            Assert.Equal("[TestedMethod(\"Key_Add()\")]", attributeLines[4]);
            Assert.Equal("[TestedMethod(\"Key_Find()\")]", attributeLines[5]);
            Assert.Equal("[TestedMethod(\"Key_Remove()\")]", attributeLines[6]);
            Assert.Equal(7, attributeLines.Count);
            #endregion

            #region Test4: [ActiveTemplate_(Description = "This code will link different classes into a CTI network", Parameter1_Caption = "Class typename:", Parameter1_Name= "ClassHeading_NewTypeName", Parameter1_Value= enATemplate_Value.Value_FromClipboard, Parameter2_Caption = "Property name:", Parameter2_Name = "NewTypeName")]
            // =======================================================
            // [ActiveTemplate_(Description = "This code will link different classes into a CTI network",
            // Parameter1_Caption = "Class typename:", Parameter1_Name= "ClassHeading_NewTypeName", Parameter1_Value= enATemplate_Value.Value_FromClipboard,
            // Parameter2_Caption = "Property name:", Parameter2_Name = "NewTypeName")]
            source.Clear();
            source.Add("        [ActiveTemplate_(Description = \"This code will link different classes into a CTI network\",");
            source.Add("        Parameter1_Caption = \"Class typename:\", Parameter1_Name= \"ClassHeading_NewTypeName\", Parameter1_Value= enATemplate_Value.Value_FromClipboard, ");
            source.Add("        Parameter2_Caption = \"Property name:\", Parameter2_Name = \"NewTypeName\")]");
            attributeLines = ClassNTAttributes_Methods.Attributes_FromCode(source);
            var attLine = "[ActiveTemplate_(Description = \"This code will link different classes into a CTI network\", Parameter1_Caption = \"Class typename:\", Parameter1_Name= \"ClassHeading_NewTypeName\", Parameter1_Value= enATemplate_Value.Value_FromClipboard, Parameter2_Caption = \"Property name:\", Parameter2_Name = \"NewTypeName\")]";
            Assert.Equal(attLine, attributeLines[0]);
            Assert.Equal(1, attributeLines.Count);
            #endregion
        }
Exemplo n.º 7
0
        /// <summary>
        /// Converts the method's documentation to intermediate lines list.
        /// </summary>
        /// <param name="sourceLines">The header lines list</param>
        /// <param name="ii">The ii indexer reference variable</param>
        /// <param name="statistics"></param>
        /// <param name="commentLines">The documentation lines.</param>
        /// <param name="summaryLine">The summary line.</param>
        /// <param name="attributeLines">The attribute lines.</param>
        /// <param name="returnLine">The return line.</param>
        /// <param name="ctiCodeLine">The cti code line.</param>
        public static void Documentation_Parts(List <string> sourceLines, ref int ii, ClassNTStats_ statistics, out List <string> commentLines, out string summaryLine,
                                               out List <string> attributeLines, out string returnLine, out string ctiCodeLine)
        {
            // <summary>Determines whether the specified input string contains index. This is supposed to be faster than IndexOf()</summary>
            bool summaryStart = false;
            bool returnStart  = false;

            //bool codeStart = false;
            commentLines   = new List <string>();
            attributeLines = new List <string>();
            returnLine     = "";
            summaryLine    = "";
            ctiCodeLine    = "";

            string line = sourceLines[ii].Trim();

            while (line == "" || line.Contains("///") || line.Substring(0, 1) == "[")
            {
                statistics.ClassTotalLines++;
                if (line.Substring(0, 1) == "[")
                {
                    // Attributes
                    attributeLines.AddRange(ClassNTAttributes_Methods.Attributes_FromCodeLine(line));
                    statistics.TotalAttributes++;
                    statistics.ClassTotalCodeLines++;
                }
                else if (line.Contains("////") == false && line != "")
                {
                    // This is not a comment or this is an empty line -> This is the documentation
                    statistics.ClassTotalCommentLines++;
                    line = line.Replace("///", "").Trim();

                    #region Summary =======================================================
                    if (summaryStart)
                    {
                        summaryLine += line;
                        if (line.Contains("</summary>"))
                        {
                            summaryStart = false;
                            line         = summaryLine;
                        }
                    }
                    else if (line.Contains("<summary>"))
                    {
                        summaryLine = line;
                        if (line.Contains("</summary>") == false)
                        {
                            summaryStart = true;
                        }
                    }
                    #endregion

                    #region Return ======================================================
                    if (returnStart)
                    {
                        returnLine += line;
                        if (line.Contains("</returns>"))
                        {
                            returnStart = false;
                            line        = returnLine;
                        }
                    }
                    else if (line.Contains("<returns>"))
                    {
                        returnLine = line;
                        if (line.Contains("</returns>") == false)
                        {
                            returnStart = true;
                        }
                    }
                    #endregion ==============================================================

                    #region Code ======================================================
                    // Code tag is no longer used
                    //if (codeStart)
                    //{
                    //    ctiCodeLine += line;
                    //    if (ctiCodeLine.Contains("</code>"))
                    //    {
                    //        codeStart = false;
                    //        line = ctiCodeLine;
                    //    }
                    //}
                    //else
                    //if (line.Contains("<code "))
                    //{
                    //    ctiCodeLine = line;
                    //    if (line.Contains("</code>") == false) codeStart = true;
                    //}
                    #endregion ==============================================================

                    // Only add the line if we know what the return value is -> we want to compress the XML to viewer lines as it is then more readable
                    if (summaryStart == false && returnStart == false)
                    {
                        commentLines.Add(line);
                    }
                }

                ii++;
                line = sourceLines[ii].Trim(); // Move to the next line
            }

            summaryLine = summaryLine.zConvert_XML_ValueBetweenTags("summary");
        }