public void generateFullNameString()
        {
            Name test = new Name("Kanye", "West");

            test.Title = "Mr.";
            Assert.AreEqual("Mr. Kanye West", NameUtilities.fullNameString(test));
        }
Example #2
0
 /// <summary>
 /// Writes a method
 /// </summary>
 /// <param name="output">Output</param>
 /// <param name="decompiler">Decompiler</param>
 /// <param name="method">Method</param>
 /// <param name="showToken">true to write tokens</param>
 public void Write(ITextColorWriter output, IDecompiler decompiler, MethodDef method, bool showToken)
 {
     output.Write(decompiler.MetadataTextColorProvider.GetColor(method), NameUtilities.CleanIdentifier(method.Name));
     output.Write(BoxedTextColor.Punctuation, "(");
     foreach (var p in method.Parameters)
     {
         if (p.IsHiddenThisParameter)
         {
             continue;
         }
         if (p.MethodSigIndex > 0)
         {
             output.WriteCommaSpace();
         }
         decompiler.WriteType(output, p.Type.ToTypeDefOrRef(), false, p.ParamDef);
     }
     if (method.CallingConvention == CallingConvention.VarArg || method.CallingConvention == CallingConvention.NativeVarArg)
     {
         if (method.MethodSig.GetParamCount() > 0)
         {
             output.WriteCommaSpace();
         }
         output.Write(BoxedTextColor.Operator, "...");
     }
     output.Write(BoxedTextColor.Punctuation, ")");
     output.WriteSpace();
     output.Write(BoxedTextColor.Punctuation, ":");
     output.WriteSpace();
     decompiler.WriteType(output, method.ReturnType.ToTypeDefOrRef(), false, method.Parameters.ReturnParameter.ParamDef);
     WriteToken(output, method, showToken);
 }
Example #3
0
        /// <inheritdoc/>
        public virtual void WriteShort(IDecompilerOutput output, IDecompiler decompiler, bool showOffset)
        {
            decompiler.WriteCommentBegin(output, true);
            output.WriteOffsetComment(this, showOffset);
            const string LTR = "\u200E";

            output.Write(NameUtilities.CleanName(Name) + LTR, this, DecompilerReferenceFlags.Local | DecompilerReferenceFlags.Definition, BoxedTextColor.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", SimpleTypeConverter.ByteArrayToString(file.HashValue));
                break;

            case ResourceType.Embedded:
                extra = string.Format(dnSpy_Contracts_DnSpy_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), BoxedTextColor.Comment);
            decompiler.WriteCommentEnd(output, true);
            output.WriteLine();
        }
Example #4
0
        /// <summary>
        /// "Decompiles" the data
        /// </summary>
        /// <param name="context">Context</param>
        /// <param name="stream">Stream</param>
        /// <param name="name">Name</param>
        /// <returns></returns>
        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(new StreamReader(stream, true).ReadToEnd(), BoxedTextColor.Text);
            string ext;

            if (type == FileType.Xml)
            {
                ext = ".xml";
            }
            else
            {
                try {
                    ext = Path.GetExtension(NameUtilities.CleanName(name));
                }
                catch (ArgumentException) {
                    ext = ".txt";
                }
            }
            context.ContentTypeString = ContentTypesHelper.TryGetContentTypeStringByExtension(ext) ?? ContentTypes.PlainText;
            return(true);
        }
        public void makeNameTestSpecialChars()
        {
            String example = "Knowles-Carter, Beyonce ";
            Name   name    = NameUtilities.makeName(example);

            Assert.AreEqual(name.First, "Beyonce");
            Assert.AreEqual(name.Last, "Knowles-Carter");
        }
        public void makeNameTestFirstLast()
        {
            String example = "Knowles, Beyonce";
            Name   name    = NameUtilities.makeName(example);

            Assert.AreEqual(name.First, "Beyonce");
            Assert.AreEqual(name.Last, "Knowles");
        }
Example #7
0
 /// <summary>
 /// Writes an event
 /// </summary>
 /// <param name="output">Output</param>
 /// <param name="language">Language</param>
 /// <param name="event">Event</param>
 /// <param name="showToken">true to write tokens</param>
 public void Write(ITextColorWriter output, ILanguage language, EventDef @event, bool showToken)
 {
     output.Write(TextColorHelper.GetColor(@event), NameUtilities.CleanIdentifier(@event.Name));
     output.WriteSpace();
     output.Write(BoxedTextColor.Punctuation, ":");
     output.WriteSpace();
     language.WriteType(output, @event.EventType, false);
     WriteToken(output, @event, showToken);
 }
Example #8
0
 /// <summary>
 /// Writes an event
 /// </summary>
 /// <param name="output">Output</param>
 /// <param name="decompiler">Decompiler</param>
 /// <param name="event">Event</param>
 /// <param name="showToken">true to write tokens</param>
 public void Write(ITextColorWriter output, IDecompiler decompiler, EventDef @event, bool showToken)
 {
     output.Write(decompiler.MetadataTextColorProvider.GetColor(@event), NameUtilities.CleanIdentifier(@event.Name));
     output.WriteSpace();
     output.Write(BoxedTextColor.Punctuation, ":");
     output.WriteSpace();
     decompiler.WriteType(output, @event.EventType, false);
     WriteToken(output, @event, showToken);
 }
Example #9
0
 /// <summary>
 /// Writes a field
 /// </summary>
 /// <param name="output">Output</param>
 /// <param name="language">Language</param>
 /// <param name="field">Field</param>
 /// <param name="showToken">true to write tokens</param>
 public void Write(ITextColorWriter output, ILanguage language, FieldDef field, bool showToken)
 {
     output.Write(TextColorHelper.GetColor(field), NameUtilities.CleanIdentifier(field.Name));
     output.WriteSpace();
     output.Write(BoxedTextColor.Punctuation, ":");
     output.WriteSpace();
     language.WriteType(output, field.FieldType.ToTypeDefOrRef(), false);
     WriteToken(output, field, showToken);
 }
Example #10
0
 /// <summary>
 /// Writes a field
 /// </summary>
 /// <param name="output">Output</param>
 /// <param name="decompiler">Decompiler</param>
 /// <param name="field">Field</param>
 /// <param name="showToken">true to write tokens</param>
 public void Write(ITextColorWriter output, IDecompiler decompiler, FieldDef field, bool showToken)
 {
     output.Write(decompiler.MetadataTextColorProvider.GetColor(field), NameUtilities.CleanIdentifier(field.Name));
     output.WriteSpace();
     output.Write(BoxedTextColor.Punctuation, ":");
     output.WriteSpace();
     decompiler.WriteType(output, field.FieldType.ToTypeDefOrRef(), false);
     WriteToken(output, field, showToken);
 }
        public void makeNameTestOnlyFirst()
        {
            // This test fails - the makeName method throws an exception
            // The makeName method needs to be fixed
            String example = "Beyonce";
            Name   name    = NameUtilities.makeName(example);

            Assert.AreEqual(name.First, "Beyonce");
            Assert.AreEqual(name.Last, null);
        }
Example #12
0
 void DecompileUnknown(DocumentTreeNodeData node)
 {
     if (node is IDecompileSelf decompileSelf && !(decompileNodeContext is null))
     {
         if (decompileSelf.Decompile(decompileNodeContext))
         {
             return;
         }
     }
     decompiler.WriteCommentLine(output, NameUtilities.CleanName(node.ToString(decompiler)));
 }
Example #13
0
        /// <inheritdoc/>
        public virtual void WriteShort(IDecompilerOutput output, IDecompiler decompiler, bool showOffset)
        {
            decompiler.WriteCommentBegin(output, true);
            output.WriteOffsetComment(this, showOffset);
            const string LTR = "\u200E";

            output.Write(NameUtilities.CleanName(Name) + LTR, this, DecompilerReferenceFlags.Local | DecompilerReferenceFlags.Definition, BoxedTextColor.Comment);
            output.Write($" = {ValueString}", BoxedTextColor.Comment);
            decompiler.WriteCommentEnd(output, true);
            output.WriteLine();
        }
Example #14
0
        void DecompileUnknown(DocumentTreeNodeData node)
        {
            var decompileSelf = node as IDecompileSelf;

            if (decompileSelf != null && decompileNodeContext != null)
            {
                if (decompileSelf.Decompile(decompileNodeContext))
                {
                    return;
                }
            }
            decompiler.WriteCommentLine(output, NameUtilities.CleanName(node.ToString(decompiler)));
        }
Example #15
0
        /// <summary>
        /// Writes a file
        /// </summary>
        /// <param name="output">Output</param>
        /// <param name="decompiler">Decompiler</param>
        /// <param name="document">Document</param>
        public void Write(ITextColorWriter output, IDecompiler decompiler, IDsDocument document)
        {
            var filename = GetFilename(document);
            var peImage  = document.PEImage;

            if (peImage != null)
            {
                output.Write(IsExe(peImage) ? BoxedTextColor.AssemblyExe : BoxedTextColor.Assembly, NameUtilities.CleanName(filename));
            }
            else
            {
                output.Write(BoxedTextColor.Text, NameUtilities.CleanName(filename));
            }
        }
Example #16
0
        /// <summary>
        /// Writes a file
        /// </summary>
        /// <param name="output">Output</param>
        /// <param name="language">Language</param>
        /// <param name="file">File</param>
        public void Write(ITextColorWriter output, ILanguage language, IDnSpyFile file)
        {
            var filename = GetFilename(file);
            var peImage  = file.PEImage;

            if (peImage != null)
            {
                output.Write(IsExe(peImage) ? BoxedTextColor.AssemblyExe : BoxedTextColor.Assembly, NameUtilities.CleanName(filename));
            }
            else
            {
                output.Write(BoxedTextColor.Text, NameUtilities.CleanName(filename));
            }
        }
Example #17
0
        public override void WriteShort(IDecompilerOutput output, IDecompiler decompiler, bool showOffset)
        {
            if (output is IDocumentViewerOutput documentViewerOutput)
            {
                decompiler.WriteCommentBegin(output, true);
                output.WriteOffsetComment(this, showOffset);
                documentViewerOutput.AddUIElement(() => {
                    return(new System.Windows.Controls.Image {
                        Source = imageSource,
                    });
                });
                output.Write(" = ", BoxedTextColor.Comment);
                const string LTR = "\u200E";
                output.Write(NameUtilities.CleanName(Name) + LTR, this, DecompilerReferenceFlags.Local | DecompilerReferenceFlags.Definition, BoxedTextColor.Comment);
                decompiler.WriteCommentEnd(output, true);
                output.WriteLine();
                return;
            }

            base.WriteShort(output, decompiler, showOffset);
        }
Example #18
0
 void Decompile(DerivedTypeNode node) => decompiler.WriteCommentLine(output, NameUtilities.CleanName(node.TypeDef.ReflectionFullName));
Example #19
0
 protected override void Write(ITextColorWriter output, IDecompiler decompiler) =>
 output.Write(BoxedTextColor.AssemblyModule, NameUtilities.CleanIdentifier(module.Name));
Example #20
0
 void Decompile(IAssemblyReferenceNode node) => language.WriteCommentLine(output, NameUtilities.CleanName(node.AssemblyRef.ToString()));
Example #21
0
 protected override void Write(ITextColorWriter output, ILanguage language) =>
 output.Write(BoxedTextColor.Module, NameUtilities.CleanIdentifier(module.Name));
Example #22
0
 /// <summary>
 /// Writes a module reference
 /// </summary>
 /// <param name="output">Output</param>
 /// <param name="decompiler">Decompiler</param>
 /// <param name="modRef">Module reference</param>
 /// <param name="showToken">true to write tokens</param>
 public void Write(ITextColorWriter output, IDecompiler decompiler, ModuleRef modRef, bool showToken)
 {
     output.Write(BoxedTextColor.Text, NameUtilities.CleanIdentifier(modRef.Name));
     WriteToken(output, modRef, showToken);
 }
Example #23
0
 /// <summary>
 /// Writes an assembly reference
 /// </summary>
 /// <param name="output">Output</param>
 /// <param name="decompiler">Decompiler</param>
 /// <param name="asmRef">Assembly reference</param>
 /// <param name="showToken">true to write tokens</param>
 public void Write(ITextColorWriter output, IDecompiler decompiler, AssemblyRef asmRef, bool showToken)
 {
     output.Write(BoxedTextColor.Text, NameUtilities.CleanIdentifier(asmRef.Name));
     WriteToken(output, asmRef, showToken);
 }
Example #24
0
 void Decompile(IBaseTypeNode node) => language.WriteCommentLine(output, NameUtilities.CleanName(node.TypeDefOrRef.ReflectionFullName));
Example #25
0
 /// <summary>
 /// Escapes text for <see cref="MenuItem"/> headers
 /// </summary>
 /// <param name="s"></param>
 /// <returns></returns>
 public static string EscapeMenuItemHeader(string s) => NameUtilities.CleanName(s) !.Replace("_", "__");
Example #26
0
 void Decompile(ModuleReferenceNode node) => decompiler.WriteCommentLine(output, NameUtilities.CleanName(node.ModuleRef.ToString()));
 /// <remarks>
 /// TODO: Use UIUtilities.EscapeMenuItemHeader, see 0xd4d/dnSpy#1201
 /// </remarks>
 public override string GetHeader(IMenuItemContext context) => NameUtilities
 .CleanName($"{Path.GetFileName(injectionArguments.Path)} {injectionArguments.TypeFull}.{injectionArguments.Method}({Quote(injectionArguments.Argument) ?? "null"})")
 .Replace("_", "__");