public string EmitHtml(PageEmitter emitter) { var methods = Methods.OrderBy(m => m.Name).ToArray(); var methodsText = ""; foreach (var method in methods) { methodsText += method.EmitHtml(Name) + Environment.NewLine; } var methodList = "<ul>" + string.Join(Environment.NewLine, methods .Select(m => $"<li>{PageEmitter.GetImg("method") + PageEmitter.GetImg("static")} <a href=\"#method-{m.Name}\">{m.Name}</a></li>")) + "</ul>"; var content = emitter.FillTemplate("apiclass", ("NAME", Name), ("METHODLIST", methodList), ("METHODS", methodsText), ("SOURCELINK", GetSourceLink())); return(content); }
public string EmitHtml(PageEmitter emitter) { var ctor = Methods.FirstOrDefault(m => m.FunctionType == ScriptFunctionType.Constructor); var shortClassName = Name[0].ToString().ToLower(); var ctorText = $"<code><span class=\"arg-type\">var</span> {shortClassName} = <span class=\"arg-type\">new</span> <b>{Name}</b>();</code>"; if (ctor.FunctionType == ScriptFunctionType.Constructor) { ctorText = ctor.EmitHtml(Name); } var varsIndex = new List <string>(); var methodsIndex = new List <string>(); var getsetIndex = new List <string>(); var varsText = "-- No Variables --"; if (Variables.Length > 0) { varsText = ""; foreach (var variable in Variables) { varsText += variable.EmitHtml(Name) + Environment.NewLine; varsIndex.Add($"<li>{PageEmitter.GetImg("variable")} <a href=\"#var-{variable.Name}\">{variable.Name}</a></li>"); } } var getsetText = "-- No Getters & Setters --"; var getsets = Methods .Where(m => m.IsAccessor) .OrderBy(m => m.Name) .GroupBy(m => m.FunctionType); if (getsets.Count() > 0) { getsetText = ""; foreach (var methodSet in getsets) { foreach (var getset in methodSet) { getsetText += getset.EmitHtml(Name) + Environment.NewLine; var getsetid = "get"; var img = PageEmitter.GetImg("getter", "Getter"); if (getset.IsStatic) { img += PageEmitter.GetImg("static", "Static Getter"); } if (getset.FunctionType == ScriptFunctionType.Setter) { getsetid = "set"; img = PageEmitter.GetImg("setter", "Setter"); if (getset.IsStatic) { img += PageEmitter.GetImg("static", "Static Setter"); } } getsetIndex.Add($"<li>{img} <a href=\"#{getsetid}-{getset.Name}\">({getsetid}) {getset.Name}</a></li>"); } } } var methodsText = "-- No Methods --"; var methods = Methods .Where(m => m.FunctionType == ScriptFunctionType.Standard) .OrderBy(m => m.Name).ToArray(); if (methods.Length > 0) { methodsText = ""; foreach (var method in methods) { methodsText += method.EmitHtml(Name) + Environment.NewLine; var img = PageEmitter.GetImg("method"); if (method.IsStatic) { img += PageEmitter.GetImg("static"); } methodsIndex.Add($"<li>{img} <a href=\"#method-{method.Name}\">{method.Name}</a></li>"); } } var indexersText = "-- No Indexers --"; var hasIndexer = false; var indexerGetIndex = ""; var indexerSetIndex = ""; var indexers = Methods .Where(m => m.IsIndexer) .GroupBy(m => m.FunctionType); if (indexers.Count() > 0) { indexersText = ""; hasIndexer = true; foreach (var group in indexers) { foreach (var indexer in group) { if (indexer.FunctionType == ScriptFunctionType.IndexerGet) { indexerGetIndex = $"<li>{PageEmitter.GetImg("indexer-get")} <a href=\"#index-get-{indexer.Name}\">(get) indexer</a></li>"; } if (indexer.FunctionType == ScriptFunctionType.IndexerSet) { indexerSetIndex = $"<li>{PageEmitter.GetImg("indexer-set")} <a href=\"#index-set-{indexer.Name}\">(set) indexer</a></li>"; } indexersText += indexer.EmitHtml(Name) + Environment.NewLine; } } } var index = $"<ul><li>{PageEmitter.GetImg("ctor")} <a href=\"#ctor\">Constructor</a></li>"; if (varsIndex.Count > 0) { index += $"<li>{PageEmitter.GetImg("variable")} <a href=\"#vars\">Variables</a>"; if (varsIndex.Count > 0) { index += "<ul>"; index += string.Join(Environment.NewLine, varsIndex); index += "</ul>"; } index += "</li>"; } if (getsetIndex.Count > 0) { index += $"<li>{PageEmitter.GetImg("accessor", "Getters and Setters")} <a href=\"#get-set\">Getters & Setters</a>"; if (getsetIndex.Count > 0) { index += "<ul>"; index += string.Join(Environment.NewLine, getsetIndex); index += "</ul>"; } index += "</li>"; } if (methodsIndex.Count > 0) { index += $"<li>{PageEmitter.GetImg("method")} <a href=\"#methods\">Methods</a>"; if (methodsIndex.Count > 0) { index += "<ul>"; index += string.Join(Environment.NewLine, methodsIndex); index += "</ul>"; } index += "</li>"; } if (hasIndexer) { index += $"<li>{PageEmitter.GetImg("indexer")} <a href=\"#indexers\">Indexers</a></li><ul>"; index += indexerGetIndex; index += indexerSetIndex; index += "</ul>"; } index += "</ul>"; var description = ""; if (!string.IsNullOrEmpty(Description)) { description = $"<i>{Description}</i><br />"; } var codeIcon = IsBuiltIn ? "cs" : "vb"; var content = emitter.FillTemplate("prototype", ("NAME", Name), ("INDEX", index), ("CONSTRUCTOR", ctorText), ("VARS", varsText), ("GETTERSSETTERS", getsetText), ("METHODS", methodsText), ("SOURCELINK", GetSourceLink()), ("INDEXERS", indexersText), ("DESCRIPTION", description), ("CODEICON", codeIcon)); return(content); }