public override string ToString() { var mb = new MarkdownBuilder(); var desc = CommentLookUp[_type.FullName].FirstOrDefault(x => x.MemberType == MemberType.Type)?.Summary ?? ""; if (desc != "") { mb.AppendLine(desc); } { var sb = new StringBuilder(); var stat = (_type.IsAbstract && _type.IsSealed) ? "static " : ""; var abst = (_type.IsAbstract && !_type.IsInterface && !_type.IsSealed) ? "abstract " : ""; var classOrStructOrEnumOrInterface = _type.IsInterface ? "interface" : _type.IsEnum ? "enum" : _type.IsValueType ? "struct" : "class"; sb.AppendLine($"public {stat}{abst}{classOrStructOrEnumOrInterface} {CSharpBeautifier.BeautifyType(_type, true)}"); var impl = string.Join(", ", new[] { _type.BaseType }.Concat(_type.GetInterfaces()).Where(x => x != null && x != typeof(object) && x != typeof(ValueType)).Select(x => CSharpBeautifier.BeautifyType(x))); if (impl != "") { sb.AppendLine(" : " + impl); } mb.Code("csharp", sb.ToString()); } mb.AppendLine(); if (_type.IsEnum) { var enums = Enum.GetNames(_type) .Select(x => new { Name = x, Value = ((Int32)Enum.Parse(_type, x)) }) .OrderBy(x => x.Value) .ToArray(); BuildTable(mb, "Enum", enums, CommentLookUp[_type.FullName], x => x.Value.ToString(), x => x.Name, x => x.Name); } else { BuildTable(mb, "Fields", GetFields(), CommentLookUp[_type.FullName], x => CSharpBeautifier.BeautifyType(x.FieldType), x => x.Name, x => x.Name); BuildTable(mb, "Properties", GetProperties(), CommentLookUp[_type.FullName], x => CSharpBeautifier.BeautifyType(x.PropertyType), x => x.Name, x => x.Name); BuildTable(mb, "Events", GetEvents(), CommentLookUp[_type.FullName], x => CSharpBeautifier.BeautifyType(x.EventHandlerType), x => x.Name, x => x.Name); BuildTable(mb, "Methods", GetMethods(), CommentLookUp[_type.FullName], x => CSharpBeautifier.BeautifyType(x.ReturnType), x => x.Name, x => CSharpBeautifier.ToMarkdownMethodInfo(x)); BuildTable(mb, "Static Fields", GetStaticFields(), CommentLookUp[_type.FullName], x => CSharpBeautifier.BeautifyType(x.FieldType), x => x.Name, x => x.Name); BuildTable(mb, "Static Properties", GetStaticProperties(), CommentLookUp[_type.FullName], x => CSharpBeautifier.BeautifyType(x.PropertyType), x => x.Name, x => x.Name); BuildTable(mb, "Static Methods", GetStaticMethods(), CommentLookUp[_type.FullName], x => CSharpBeautifier.BeautifyType(x.ReturnType), x => x.Name, x => CSharpBeautifier.ToMarkdownMethodInfo(x)); BuildTable(mb, "Static Events", GetStaticEvents(), CommentLookUp[_type.FullName], x => CSharpBeautifier.BeautifyType(x.EventHandlerType), x => x.Name, x => x.Name); } return(mb.ToString()); }
private string BuildContent(List <TypeScriptVariable> variables) { var mb = new MarkdownBuilder(); BuildIndex(mb, variables); foreach (var variable in variables) { BuildContent(mb, variable); } return(mb.ToString()); }
private string BuildContent(List <TypeScriptFunction> functions) { var mb = new MarkdownBuilder(); BuildIndex(mb, functions); foreach (var function in functions) { BuildContent(mb, function); } return(mb.ToString()); }
private string BuildReleaseNotes(ProjectSettings project, Dictionary <string, List <CommitWithType> > commitGroups) { var mb = new MarkdownBuilder(); if (!project.SkipVersionHeading) { var title = project.TitleTemplate .Replace("${VersionNum}", Version ?? project.NewVersion); mb.Header(2, title); mb.AppendLine(); } if (!string.IsNullOrEmpty(project.DateItemTemplate)) { mb.AppendLine(project.DateItemTemplate.Replace("${ReleasedDate}", DateTime.UtcNow.ToString("yyyy-MM-dd"))); } mb.AppendLine(); if (commitGroups.TryGetValue("NEW", out var newCommits)) { foreach (var commit in newCommits) { WriteCommitWithType(mb, project, commit, "New"); } } if (commitGroups.TryGetValue("UPD", out var updateCommits)) { foreach (var commit in updateCommits) { WriteCommitWithType(mb, project, commit, "Upd"); } } if (commitGroups.TryGetValue("FIX", out var fixCommits)) { foreach (var commit in fixCommits) { WriteCommitWithType(mb, project, commit, "Fix"); } } return(mb.ToString()); }
private string BuildContent(TypeScriptEnumeration @enum) { var mb = new MarkdownBuilder(); mb.AppendLine(@enum.Comment?.ShortText ?? ""); mb.AppendLine(); BuildExample(mb, @enum.Comment); mb.Header(3, "Enum"); var headers = new string[] { "Name", "Value", "Description" }; var data = @enum.Members.Select(m => new string[] { m.Name, MarkdownBuilder.MarkdownCodeQuote(m.DefaultValue), m.Comment?.ShortText ?? "" }); mb.Table(headers, data); return(mb.ToString()); }
private string BuildContent(TypeScriptInterface @interface, bool extension = false, string articleUrl = null) { var mb = new MarkdownBuilder(); if (!string.IsNullOrEmpty(@interface.Comment?.ShortText)) { mb.AppendLine(@interface.Comment.ShortText); mb.AppendLine(); } BuildExample(mb, @interface.Comment); if (!extension) { BuildExtendedTypes(mb, @interface); } BuildIndex(mb, @interface, extension, articleUrl); if (@interface.Properties.Any()) { mb.Header(2, "Properties"); mb.AppendSeparateLine(); foreach (var property in @interface.Properties) { BuildContent(mb, property); } } if (@interface.Methods.Any()) { mb.Header(2, "Methods"); mb.AppendSeparateLine(); foreach (var method in @interface.Methods) { BuildContent(mb, method); } } return(mb.ToString()); }
public override string ToString() { var mb = new MarkdownBuilder(); var desc = Comments.FirstOrDefault(x => x.MemberType == MemberType.Type)?.Summary ?? ""; if (desc != "") { mb.AppendLine(desc); } { var sb = new StringBuilder(); var stat = (_type.IsAbstract && _type.IsSealed) ? "static " : ""; var abst = (_type.IsAbstract && !_type.IsInterface && !_type.IsSealed) ? "abstract " : ""; var classOrStructOrEnumOrInterface = _type.IsInterface ? "interface" : _type.IsEnum ? "enum" : _type.IsValueType ? "struct" : "class"; sb.AppendLine($"public {stat}{abst}{classOrStructOrEnumOrInterface} {CSharpBeautifier.BeautifyType(_type, isFull: true)}"); var impl = string.Join(", ", new[] { _type.BaseType }.Concat(_type.Interfaces.Select(x => x.InterfaceType)) .Where(x => x != null && x.FullName != "System.Object" && x.FullName != "System.ValueType") .Select(x => CSharpBeautifier.BeautifyType(x))); if (impl != "") { sb.AppendLine(" : " + impl); } mb.Code("csharp", sb.ToString()); } if (_package != null) { mb.Append("Package: "); mb.CodeQuote(_package.Name); if (TargetFrameworks.Any()) { mb.Append(" (targets: "); mb.Append(string.Join(", ", TargetFrameworks.Select(tfm => MarkdownBuilder.MarkdownCodeQuote(tfm)))); mb.Append(")"); } mb.AppendLine(); mb.AppendLine(); } mb.Append("Assembly: "); mb.CodeQuote($"{this.AssymblyName}.dll"); mb.AppendLine(); mb.AppendLine(); if (_type.IsEnum) { var enums = _type.Fields .Where(x => x.Name != "value__") .Select(x => new { Name = x.Name, Value = Convert.ToInt64(x.Constant) }) .OrderBy(x => x.Value) .ToArray(); BuildTable(mb, "Enum", enums, Comments, x => MarkdownBuilder.MarkdownCodeQuote(x.Value.ToString()), x => x.Name, x => x.Name); } else { BuildTable(mb, "Constructors", GetConstructors(), Comments, x => CSharpBeautifier.ToMarkdownTypeReference(_library, x.ReturnType), x => x.Name, x => CSharpBeautifier.ToMarkdownMethodInfo(_library, x)); BuildTable(mb, "Fields", GetFields(), Comments, x => CSharpBeautifier.ToMarkdownTypeReference(_library, x.FieldType), x => x.Name, x => x.Name); BuildTable(mb, "Properties", GetProperties(), Comments, x => CSharpBeautifier.ToMarkdownTypeReference(_library, x.PropertyType), x => x.Name, x => x.Name); BuildTable(mb, "Events", GetEvents(), Comments, x => CSharpBeautifier.ToMarkdownTypeReference(_library, x.EventType), x => x.Name, x => x.Name); BuildTable(mb, "Methods", GetMethods(), Comments, x => CSharpBeautifier.ToMarkdownTypeReference(_library, x.ReturnType), x => x.Name, x => CSharpBeautifier.ToMarkdownMethodInfo(_library, x)); BuildTable(mb, "Static Fields", GetStaticFields(), Comments, x => CSharpBeautifier.ToMarkdownTypeReference(_library, x.FieldType), x => x.Name, x => x.Name); BuildTable(mb, "Static Properties", GetStaticProperties(), Comments, x => CSharpBeautifier.ToMarkdownTypeReference(_library, x.PropertyType), x => x.Name, x => x.Name); BuildTable(mb, "Static Methods", GetStaticMethods(), Comments, x => CSharpBeautifier.ToMarkdownTypeReference(_library, x.ReturnType), x => x.Name, x => CSharpBeautifier.ToMarkdownMethodInfo(_library, x)); BuildTable(mb, "Static Events", GetStaticEvents(), Comments, x => CSharpBeautifier.ToMarkdownTypeReference(_library, x.EventType), x => x.Name, x => x.Name); } return(mb.ToString()); }
private string BuildContent(TypeScriptClass @class) { var mb = new MarkdownBuilder(); if (!string.IsNullOrEmpty(@class.Comment?.ShortText)) { mb.AppendLine(@class.Comment.ShortText); mb.AppendLine(); } BuildExample(mb, @class.Comment); BuildImplementedTypes(mb, @class); BuildExtendedTypes(mb, @class); BuildIndex(mb, @class); if (@class.Constructor != null) { mb.Header(2, "Constructors"); mb.AppendSeparateLine(); mb.Header(4, "constructor"); mb.AppendLine(); if (!string.IsNullOrEmpty(@class.Constructor.Signatures.First().Comment?.ShortText)) { mb.AppendLine(@class.Constructor.Signatures.First().Comment.ShortText); } foreach (var signature in @class.Constructor.Signatures) { mb.AppendLine("⊕ " + signature.Format(_lib)); mb.AppendLine(); } BuildParameters(mb, @class.Constructor.Signatures.Last().Parameters); BuildExample(mb, @class.Constructor.Signatures.First().Comment); mb.AppendSeparateLine(); } mb.AppendLine(); var publicMethods = @class.Methods.Where(m => !m.IsStatic && !m.IsPrivate && !m.IsProtected).ToList(); var protectedMethods = @class.Methods.Where(m => m.IsProtected).ToList(); var staticMethods = @class.Methods.Where(m => m.IsStatic && !m.IsPrivate).ToList(); var publicProperties = @class.Properties.Where(p => !p.IsStatic && !p.IsPrivate && !p.IsProtected).ToList(); var protectedProperties = @class.Properties.Where(p => p.IsProtected).ToList(); var staticProperties = @class.Properties.Where(p => p.IsStatic && !p.IsPrivate).ToList(); var publicAccessors = @class.Accessors.Where(a => !a.IsPrivate && !a.IsProtected).ToList(); var protectedAccesors = @class.Accessors.Where(a => a.IsProtected).ToList(); if (publicProperties.Any()) { mb.Header(2, "Public Properties"); mb.AppendSeparateLine(); foreach (var property in publicProperties) { BuildContent(mb, property); } } if (protectedProperties.Any()) { mb.Header(2, "Protected Properties"); mb.AppendSeparateLine(); foreach (var property in protectedProperties) { BuildContent(mb, property); } } if (staticProperties.Any()) { mb.Header(2, "Static Properties"); mb.AppendSeparateLine(); foreach (var property in staticProperties) { BuildContent(mb, property); } } if (publicAccessors.Any()) { mb.Header(2, "Public Accessors"); mb.AppendSeparateLine(); foreach (var accessor in publicAccessors) { BuildContent(mb, accessor); } } if (protectedAccesors.Any()) { mb.Header(2, "Protected Accessors"); mb.AppendSeparateLine(); foreach (var accessor in protectedAccesors) { BuildContent(mb, accessor); } } if (publicMethods.Any()) { mb.Header(2, "Public Methods"); mb.AppendSeparateLine(); foreach (var method in publicMethods) { BuildContent(mb, method); } } if (protectedMethods.Any()) { mb.Header(2, "Protected Methods"); mb.AppendSeparateLine(); foreach (var method in protectedMethods) { BuildContent(mb, method); } } if (staticMethods.Any()) { mb.Header(2, "Static Methods"); mb.AppendSeparateLine(); foreach (var method in staticMethods) { BuildContent(mb, method); } } return(mb.ToString()); }