public override string Format(ITypeScriptLibrary lib, FormatMode mode = FormatMode.Markdown) { var path = lib.FindPathToType(Name); var name = path != null?MarkdownBuilder.MarkdownUrl(Name, path) : MarkdownBuilder.MarkdownCodeQuote(Name); if (TypeArguments.Any()) { name += "<" + string.Join(",", TypeArguments.Select(t => t.Format(lib, mode))) + ">"; } return(name); }
public static string ToMarkdownTypeReference(CSharpLibrary lib, TypeReference t, bool isParam = false) { if (t == null) { return(""); } if (t.FullName == "System.Void") { return("`void`"); } if (t.FullName == "System.Object") { return("`object`"); } if (t.FullName == "System.Boolean") { return("`bool`"); } if (t.FullName == "System.String") { return("`string`"); } if (t.FullName == "System.Int32") { return("`int`"); } if (t.FullName == "System.Int64") { return("`long`"); } if (t.FullName == "System.Double") { return("`double`"); } var hasMdType = lib.Types.TryGetValue(t.FullName, out var mdType); string name; if (!t.IsGenericInstance && !t.HasGenericParameters) { name = (t.IsNested && !isParam) ? $"{t.DeclaringType.Name}.{t.Name}" : t.Name; if (hasMdType) { return(MarkdownBuilder.MarkdownUrl(name, mdType.GetPath())); } return(MarkdownBuilder.MarkdownCodeQuote(name)); } string innerFormat = ""; if (t is GenericInstanceType genType) { var args = genType.GenericArguments.ToArray(); innerFormat = string.Join(", ", args.Select(x => ToMarkdownTypeReference(lib, x, isParam: true))); } else { innerFormat = string.Join(", ", t.GenericParameters.Select(x => x.Name)); } name = Regex.Replace(t.Name, @"`.+$?", ""); if (hasMdType) { name = MarkdownBuilder.MarkdownUrl(name, mdType.GetPath()); } else { name = MarkdownBuilder.MarkdownCodeQuote(name); } return(name + "<" + innerFormat + ">"); }