示例#1
0
        public virtual void WriteShort(ITextOutput output, ILanguage language, bool showOffset)
        {
            language.WriteCommentBegin(output, true);
            output.WriteOffsetComment(this, showOffset);
            output.WriteDefinition(NameUtils.CleanName(Name), this, TextTokenKind.Comment);
            string extra = null;

            switch (resource.ResourceType)
            {
            case ResourceType.AssemblyLinked:
                extra = ((AssemblyLinkedResource)resource).Assembly.FullName;
                break;

            case ResourceType.Linked:
                var file = ((LinkedResource)resource).File;
                extra = string.Format("{0}, {1}, {2}", file.Name, file.ContainsNoMetaData ? "ContainsNoMetaData" : "ContainsMetaData", NumberVMUtils.ByteArrayToString(file.HashValue));
                break;

            case ResourceType.Embedded:
                extra = string.Format(dnSpy_Shared_Resources.NumberOfBytes, ((EmbeddedResource)resource).Data.Length);
                break;
            }
            output.Write(string.Format(" ({0}{1}, {2})", extra == null ? string.Empty : string.Format("{0}, ", extra), resource.ResourceType, resource.Attributes), TextTokenKind.Comment);
            language.WriteCommentEnd(output, true);
            output.WriteLine();
        }
示例#2
0
        public static bool Decompile(IDecompileNodeContext context, Stream stream, string name)
        {
            if (stream == null || stream.Length > 500 * 1024)
            {
                return(false);
            }

            stream.Position = 0;
            FileType type = GuessFileType.DetectFileType(stream);

            if (type == FileType.Binary)
            {
                return(false);
            }

            stream.Position = 0;
            context.Output.Write(FileReader.OpenStream(stream, Encoding.UTF8).ReadToEnd(), TextTokenKind.Text);
            string ext;

            if (type == FileType.Xml)
            {
                ext = ".xml";
            }
            else
            {
                try {
                    ext = Path.GetExtension(NameUtils.CleanName(name));
                }
                catch (ArgumentException) {
                    ext = ".txt";
                }
            }
            context.HighlightingExtension = ext;
            return(true);
        }
示例#3
0
 public virtual void WriteShort(ITextOutput output, ILanguage language, bool showOffset)
 {
     language.WriteCommentBegin(output, true);
     output.WriteOffsetComment(this, showOffset);
     output.WriteDefinition(NameUtils.CleanName(Name), this, TextTokenKind.Comment);
     output.Write(string.Format(" = {0}", ValueString), TextTokenKind.Comment);
     language.WriteCommentEnd(output, true);
     output.WriteLine();
 }
示例#4
0
        void DecompileUnknown(IFileTreeNodeData node)
        {
            var decompileSelf = node as IDecompileSelf;

            if (decompileSelf != null && decompileNodeContext != null)
            {
                if (decompileSelf.Decompile(decompileNodeContext))
                {
                    return;
                }
            }
            language.WriteCommentLine(output, NameUtils.CleanName(node.ToString(language)));
        }
示例#5
0
        public void Write(ISyntaxHighlightOutput output, ILanguage language, IDnSpyFile file)
        {
            var filename = GetFilename(file);
            var peImage  = file.PEImage;

            if (peImage != null)
            {
                output.Write(NameUtils.CleanName(filename), IsExe(peImage) ? TextTokenKind.AssemblyExe : TextTokenKind.Assembly);
            }
            else
            {
                output.Write(NameUtils.CleanName(filename), TextTokenKind.Text);
            }
        }
示例#6
0
        public override void WriteShort(ITextOutput output, ILanguage language, bool showOffset)
        {
            var smartOutput = output as ISmartTextOutput;

            if (smartOutput != null)
            {
                language.WriteCommentBegin(output, true);
                output.WriteOffsetComment(this, showOffset);
                smartOutput.AddUIElement(() => {
                    return(new System.Windows.Controls.Image {
                        Source = imageSource,
                    });
                });
                output.Write(" = ", TextTokenKind.Comment);
                output.WriteDefinition(NameUtils.CleanName(Name), this, TextTokenKind.Comment);
                language.WriteCommentEnd(output, true);
                output.WriteLine();
                return;
            }

            base.WriteShort(output, language, showOffset);
        }
示例#7
0
 void Decompile(IModuleReferenceNode node)
 {
     language.WriteCommentLine(output, NameUtils.CleanName(node.ModuleRef.ToString()));
 }
示例#8
0
 void Decompile(IDerivedTypeNode node)
 {
     language.WriteCommentLine(output, NameUtils.CleanName(node.TypeDef.ReflectionFullName));
 }
示例#9
0
 public static string EscapeMenuItemHeader(string s)
 {
     return(NameUtils.CleanName(s).Replace("_", "__"));
 }