예제 #1
0
        public override void BuildChildNodes(ITreeBuilder treeBuilder,
                                             object dataObject)
        {
            PackagesNode packages = dataObject as PackagesNode;

            foreach (ProjectFile projectFile in packages.Project.Files)
            {
                if (projectFile.BuildAction == BuildAction.Compile)
                {
                    if (Path.GetExtension(projectFile.Name).ToLower() == ".py")
                    {
                        var name = PythonHelper.ModuleFromFilename(projectFile.Name);

                        // It's only a module unless there is a "." in the name
                        // or its the __init__.py inside the package folder.
                        if (name.Contains(".") || Path.GetFileName(projectFile.Name).ToLower() == "__init__.py")
                        {
                            name = PythonHelper.PackageFromFilename(projectFile.Name);
                            treeBuilder.AddChild(new PackageNode()
                            {
                                Name        = name,
                                ProjectFile = projectFile,
                            });
                        }
                    }
                }
            }
        }
예제 #2
0
        public void Build()
        {
            if (Module == null)
            {
                return;
            }

            // fake class containing modules funcs
            var module = new PackageDomType()
            {
                Name       = PythonHelper.PackageFromFilename(FileName),
                ClassType  = ClassType.Unknown,
                Location   = new DomLocation(0, 0),
                BodyRegion = Module.Region,
            };

            m_AllWrapped.Add(module);
            Add(module);

            // module functions
            foreach (IMethod method in BuildFunctions(Module.Functions))
            {
                module.Add(method);
            }

            // module attributes
            foreach (IField field in BuildAttributes(Module.Attributes))
            {
                module.Add(field);
            }

            // module classes
            foreach (IType type in BuildClasses(Module.Classes))
            {
                module.Add(type);
            }
        }