Пример #1
0
        private string GetSourceCode(object method)
        {
            TextFormatter formatter = new TextFormatter();
            ILanguage     language  = this.languageManager.ActiveLanguage;

            if ((language != null) && (formatter != null))
            {
                LanguageWriterConfiguration configuration = new LanguageWriterConfiguration();
                configuration.Visibility = this.visibilityConfiguration;
                ILanguageWriter writer = language.GetWriter(formatter, configuration);
                if (writer != null)
                {
                    try
                    {
                        IMethodDeclaration md = null;
                        if (language.Translate)
                        {
                            ITranslator translator = this.translatorManager.CreateDisassembler();
                            if (translator != null)
                            {
                                md = translator.TranslateMethodDeclaration((IMethodDeclaration)method);
                            }
                        }
                        else
                        {
                            md = (IMethodDeclaration)method;
                        }

                        writer.WriteMethodDeclaration(md);

                        return(formatter.ToString());
                    }
                    catch (Exception ex)
                    {
                        string sEx = ex.ToString();
                    }
                }
            }
            return(null);
        }
        public int GenerateCode(object activeItem)
        {
            int exceptions = 0;

            ILanguageWriterConfiguration configuration = new LanguageWriterConfiguration();
            IAssemblyResolver resolver = AssemblyManager.Resolver;
            AssemblyManager.Resolver = new AssemblyResolver(resolver);
            try
            {
                // write assembly
                IAssembly assembly = activeItem as IAssembly;
                if (assembly != null)
                {
                    // calc progress bar count
                    int pos = 0;
                    int count = 2; // 1 for the assembly info, 1 for the project
                    foreach (IModule module in assembly.Modules)
                    {
                        count += module.Types.Count;
                    }
                    count += assembly.Resources.Count;

                    // write assembly info
                    exceptions += WriteAssemblyInfo(assembly, configuration);
                    SetProgressBar((++pos * 100) / count);

                    // write modules
                    string location = string.Empty;
                    foreach (IModule module in assembly.Modules)
                    {
                        if (module.Location != location)
                            location = module.Location;

                        foreach (ITypeDeclaration typeDeclaration in module.Types)
                        {
                            if ((typeDeclaration.Namespace.Length != 0) || (
                                (typeDeclaration.Name != "<Module>") &&
                                (typeDeclaration.Name != "<PrivateImplementationDetails>")))
                            {
                                exceptions += WriteTypeDeclaration(typeDeclaration, configuration);
                            }
                            SetProgressBar((++pos * 100) / count);
                        }
                    }

                    // write resources
                    foreach (IResource resource in assembly.Resources)
                    {
                        exceptions += WriteResource(resource);
                        SetProgressBar((++pos * 100) / count);
                    }

                    GenerateVisualStudioProject(assembly.Name, _outputDirectory, assembly.Modules[0].AssemblyReferences);
                    SetProgressBar((++pos * 100) / count);
                }

                    // write single item
                else if (activeItem is ITypeDeclaration)
                {
                    ITypeDeclaration typeDeclaration = activeItem as ITypeDeclaration;
                    if ((typeDeclaration.Namespace.Length != 0) || (
                        (typeDeclaration.Name != "<Module>") &&
                        (typeDeclaration.Name != "<PrivateImplementationDetails>")))
                    {
                        exceptions += WriteTypeDeclaration(typeDeclaration, configuration);
                    }
                }
            }
            catch (Exception ex)
            {
                WriteLine("Error: " + ex.Message + Environment.NewLine + ex.StackTrace);
                exceptions++;
            }
            finally
            {
                AssemblyManager.Resolver = resolver;
            }
            return exceptions;
        }
        private void Translate()
        {
            if (this.Parent != null)
            {
                RichTextFormatter formatter = new RichTextFormatter();

                ILanguage language = this.languageManager.ActiveLanguage;

                LanguageWriterConfiguration configuration = new LanguageWriterConfiguration();
                configuration.Visibility = this.visibilityConfiguration;
                configuration["ShowCustomAttributes"]      = "true";
                configuration["ShowNamespaceImports"]      = "true";
                configuration["ShowNamespaceBody"]         = "true";
                configuration["ShowTypeDeclarationBody"]   = "true";
                configuration["ShowMethodDeclarationBody"] = "false";

                ILanguageWriter writer = language.GetWriter(formatter, configuration);

                object value = this.assemblyBrowser.ActiveItem;

                ITypeDeclaration typeDeclaration = value as ITypeDeclaration;
                if (typeDeclaration != null)
                {
                    configuration["ShowMethodDeclarationBody"] = "false";

                    if (language.Translate)
                    {
                        typeDeclaration = this.translatorManager.CreateDisassembler(null, null).TranslateTypeDeclaration(typeDeclaration, true, false);
                    }

                    writer.WriteTypeDeclaration(typeDeclaration);
                }

                IFieldDeclaration fieldDeclaration = value as IFieldDeclaration;
                if (fieldDeclaration != null)
                {
                    configuration["ShowMethodDeclarationBody"] = "true";

                    if (language.Translate)
                    {
                        fieldDeclaration = this.translatorManager.CreateDisassembler(null, null).TranslateFieldDeclaration(fieldDeclaration);
                    }

                    writer.WriteFieldDeclaration(fieldDeclaration);
                }

                IMethodDeclaration methodDeclaration = value as IMethodDeclaration;
                if (methodDeclaration != null)
                {
                    configuration["ShowMethodDeclarationBody"] = "true";

                    if (language.Translate)
                    {
                        methodDeclaration = this.translatorManager.CreateDisassembler(null, null).TranslateMethodDeclaration(methodDeclaration);
                    }

                    writer.WriteMethodDeclaration(methodDeclaration);
                }

                IPropertyDeclaration propertyDeclaration = value as IPropertyDeclaration;
                if (propertyDeclaration != null)
                {
                    configuration["ShowMethodDeclarationBody"] = "true";

                    if (language.Translate)
                    {
                        propertyDeclaration = this.translatorManager.CreateDisassembler(null, null).TranslatePropertyDeclaration(propertyDeclaration);
                    }

                    writer.WritePropertyDeclaration(propertyDeclaration);
                }

                IEventDeclaration eventDeclaration = value as IEventDeclaration;
                if (eventDeclaration != null)
                {
                    configuration["ShowMethodDeclarationBody"] = "true";

                    if (language.Translate)
                    {
                        eventDeclaration = this.translatorManager.CreateDisassembler(null, null).TranslateEventDeclaration(eventDeclaration);
                    }

                    writer.WriteEventDeclaration(eventDeclaration);
                }

                this.Rtf = formatter.ToString();
            }
        }
Пример #4
0
        public int GenerateCode(object activeItem)
        {
            int exceptions = 0;

            ILanguageWriterConfiguration configuration = new LanguageWriterConfiguration(documentation, publicOnly, membersBody);
            IAssemblyResolver            resolver      = AssemblyManager.Resolver;

            AssemblyManager.Resolver = new AssemblyResolver(resolver);
            try
            {
                // write assembly
                IAssembly assembly = activeItem as IAssembly;
                if (assembly != null)
                {
                    // calc progress bar count
                    int pos   = 0;
                    int count = 2;                     // 1 for the assembly info, 1 for the project
                    foreach (IModule module in assembly.Modules)
                    {
                        count += module.Types.Count;
                    }
                    count += assembly.Resources.Count;

                    // write assembly info
                    exceptions += WriteAssemblyInfo(assembly, configuration);
                    SetProgressBar((++pos * 100) / count);

                    // write modules
                    string location = string.Empty;
                    foreach (IModule module in assembly.Modules)
                    {
                        if (module.Location != location)
                        {
                            location = module.Location;
                        }

                        foreach (ITypeDeclaration typeDeclaration in module.Types.Cast <ITypeDeclaration>()
                                 .Where(d => publicOnly ? d.Visibility == TypeVisibility.Public || d.Visibility == TypeVisibility.NestedPublic : true))
                        {
                            if ((typeDeclaration.Namespace.Length != 0) || (
                                    (typeDeclaration.Name != "<Module>") &&
                                    (typeDeclaration.Name != "<PrivateImplementationDetails>")))
                            {
                                exceptions += WriteTypeDeclaration(typeDeclaration, configuration);
                            }
                            SetProgressBar((++pos * 100) / count);
                        }
                    }

                    // write resources
                    foreach (IResource resource in assembly.Resources)
                    {
                        exceptions += WriteResource(resource);
                        SetProgressBar((++pos * 100) / count);
                    }

                    GenerateVisualStudioProject(assembly.Name, _outputDirectory, assembly.Modules[0].AssemblyReferences);
                    SetProgressBar((++pos * 100) / count);
                }

                // write single item
                else if (activeItem is ITypeDeclaration)
                {
                    ITypeDeclaration typeDeclaration = activeItem as ITypeDeclaration;
                    if ((typeDeclaration.Namespace.Length != 0) || (
                            (typeDeclaration.Name != "<Module>") &&
                            (typeDeclaration.Name != "<PrivateImplementationDetails>")))
                    {
                        exceptions += WriteTypeDeclaration(typeDeclaration, configuration);
                    }
                }
            }
            catch (Exception ex)
            {
                WriteLine("Error: " + ex.Message + Environment.NewLine + ex.StackTrace);
                exceptions++;
            }
            finally
            {
                AssemblyManager.Resolver = resolver;
            }
            return(exceptions);
        }