Example #1
0
        public void TestBuilder2()
        {
            NAssembly assembly = new NAssembly();

            assembly.CreateStruct()
            .Namespace("TestNamespace")
            .Private.OopName("TestUt2")
            .OopBody("public static void Test(){}")
            .PublicStaticField <string>("Name")
            .PrivateStaticField <int>("_age");
            var result = assembly.Check();

            Assert.Equal($@"using System;{Environment.NewLine}namespace TestNamespace{Environment.NewLine}{{{Environment.NewLine}    private struct TestUt2{Environment.NewLine}    {{{Environment.NewLine}        public static String Name;{Environment.NewLine}        private static Int32 _age;{Environment.NewLine}        public static void Test() {{ }}{Environment.NewLine}    }}{Environment.NewLine}}}", result[0].Formatter);
        }
Example #2
0
        public void RunClassName4()
        {
            //ScriptCompiler.Init();
            string text = @"
namespace HelloWorld
{public class Test{public Test(){
            Name=""111"";
        }public string Name;
        public int Age{get;set;}
    }
}";
            //根据脚本创建动态类
            var oop = new NAssembly();

            oop.AssemblyBuilder.Compiler.Domain = DomainManagement.Random;
            oop.AddScript(text);
            Type type = oop.GetTypeFromShortName("Test");

            Assert.Equal("Test", type.Name);
        }
Example #3
0
        public static void RunClassName4()
        {
            //ScriptCompiler.Init();
            string text = @"
namespace HelloWorld
{public class Test{public Test(){
            Name=""111"";
        }public string Name;
        public int Age{get;set;}
    }
}";
            //根据脚本创建动态类
            var oop = new NAssembly();

            oop.AddScript(text);
            oop.Compile();
            Type type = oop.GetType("HelloWorld.Test");

            Assert.Equal("Test", type.Name);
        }
Example #4
0
        public void TestBuilder2()
        {
            NAssembly assembly = new NAssembly();

            assembly.CreateStruct()
            .Namespace("TestNamespace")
            .OopAccess(AccessTypes.Private).OopName("TestUt2")
            .OopBody(@"public static void Test(){}")
            .PublicStaticField <string>("Name")
            .PrivateStaticField <int>("_age");
            var result = assembly.Check();

            Assert.Equal(@"using System;
namespace TestNamespace
{
    private struct TestUt2
    {
        public static String Name;
        private static Int32 _age;
        public static void Test() { }
    }
}", result[0].Formatter);
        }
Example #5
0
        /// <summary>
        /// Loads from an assembly source definition all types to document.
        /// </summary>
        /// <param name="assemblySource">The assembly source definition.</param>
        /// <param name="memberRegistry">The member registry to populate with types.</param>
        /// <returns>
        /// An assembly documentator that contains all documented types, methods.
        /// </returns>
        public void LoadFrom(NAssemblySource assemblySource, MemberRegistry memberRegistry)
        {
            CurrentMergeGroup = assemblySource.MergeGroup;

            _source   = assemblySource;
            _registry = memberRegistry;

            var assemblyDefinition = (AssemblyDefinition)assemblySource.Assembly;

            var assemblyName = assemblyDefinition.Name.Name;
            var assemblyId   = "A:" + assemblyName;

            var assembly = (NAssembly)_registry.FindById(assemblyId);

            // If new assembly
            if (assembly == null)
            {
                assembly = new NAssembly {
                    Name = assemblyName
                };
                assembly.FullName  = assembly.Name;
                assembly.Id        = assemblyId;
                assembly.PageId    = PageIdFunction(assembly);
                assembly.PageTitle = assembly.Name + " " + assembly.Category;
                assembly.Version   = assemblyDefinition.Name.Version.ToString();
                assembly.FileName  = Path.GetFileName(Utility.GetProperFilePathCapitalization(assemblySource.Filename));

                // Apply documentation from AssemblyDoc special class
                assembly.DocNode = _source.Document.FindMemberDoc("T:" + assembly.Name + "." + AssemblyDocClass);

                _registry.Register(assembly);
            }
            assembly.SetApiGroup(CurrentMergeGroup, true);
            CurrentAssembly = assembly;

            Logger.Message("Processing assembly [{0}] [{1}]", assembly.FullName, CurrentMergeGroup);

            // Process namespaces
            // Namespaces are created only if a type is actually public
            foreach (var module in assemblyDefinition.Modules)
            {
                foreach (var type in module.Types)
                {
                    // Todo add configurable filter
                    if (!type.IsPublic)
                    {
                        continue;
                    }

                    // Skip empty namespaces and special <Module>
                    if (string.IsNullOrEmpty(type.Namespace) || type.Namespace.StartsWith("<"))
                    {
                        continue;
                    }

                    // Create naemespace
                    var parentNamespace = AddNamespace(assembly, type.Namespace);
                    parentNamespace.SetApiGroup(CurrentMergeGroup, true);

                    AddType(parentNamespace, type);
                }
            }

            //// Remove empty namespaces
            //foreach (var removeNamespace in namespaces.Values)
            //{
            //    if (removeNamespace.Types.Count == 0)
            //        assembly.Namespaces.Remove(removeNamespace);
            //}

            // Sort namespace in alphabetical order

            //@assembly.Namespaces.Sort((left, right) => left.PageId.CompareTo(right.PageId));

            //foreach (var namespaceName in @assembly.Namespaces)
            //    namespaces[namespaceName].Types.Sort((left, right) => left.PageId.CompareTo(right.PageId));
        }