public NamespaceAssemblyReader(Assembly assembly)
        {
            _generator = new TSGenerator(assembly)
            {
                Modules = true
            };

            _namespaces = new Dictionary <string, TSModule>();
            foreach (var type in assembly.ExportedTypes)
            {
                var ns = type.Namespace.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries).ToList();

                var root = ns.First();

                if (!_namespaces.ContainsKey(root))
                {
                    var module = new TSModule(root, _generator.GenerateLookupTypeName)
                    {
                        IsDeclared = true
                    };
                    _namespaces.Add(root, module);
                }
                ns.RemoveAt(0);
                _namespaces[root].AddSubNamespaceType(ns, type);
            }
        }
Beispiel #2
0
        public void AddSubNamespaceType(List <string> ns, Type type)
        {
            if (ns.Count == 0)
            {
                var ti = type.GetTypeInfo();
                if (ti.IsEnum)
                {
                    if (Settings.ConstEnumsEnabled)
                    {
                        var tsconstenum = new TSConstEnumeration(type)
                        {
                            IsExported = true
                        };
                        Enumerations.Add(tsconstenum);
                    }
                    return;
                }
                var tsinterface = new TSInterface(type, _mapType)
                {
                    IsExported = true
                };
                Interfaces.Add(tsinterface);

                return;
            }

            var root = ns.First();

            var mod = SubModules.FirstOrDefault(m => m.Name == root);

            if (mod == null)
            {
                mod = new TSModule(root, _mapType);
                SubModules.Add(mod);
            }

            ns.RemoveAt(0);

            mod.AddSubNamespaceType(ns, type);
        }
        public void AddSubNamespaceType(List<string> ns, Type type)
        {
            if (ns.Count == 0)
            {
                if (type.IsEnum)
                {
                    if (Settings.ConstEnumsEnabled)
                    {
                        var tsconstenum = new TSConstEnumeration(type)
                        {
                            IsExported = true
                        };
                        Enumerations.Add(tsconstenum);
                    }
                    return;
                }
                var tsinterface = new TSInterface(type, _mapType)
                {
                    IsExported = true
                };
                Interfaces.Add(tsinterface);

                return;

            }

            var root = ns.First();

            var mod = SubModules.FirstOrDefault(m => m.Name == root);
            if (mod == null)
            {
                mod = new TSModule(root, _mapType);
                SubModules.Add(mod);
            }

            ns.RemoveAt(0);

            mod.AddSubNamespaceType(ns, type);
        }