Files
ZelWiki/TightWiki.Engine.Function/SelfDocument.cs
2025-01-22 23:31:03 +08:00

177 lines
7.4 KiB
C#

namespace TightWiki.Engine.Function
{
public static class SelfDocument
{
/// <summary>
/// Don't ever look at this. :(
/// </summary>
public static void CreateNotExisting()
{
/*
System.Threading.Thread.Sleep(500);
foreach (var item in FunctionPrototypeDefinitions.Collection.Items)
{
string functionType = "Function";
string functionPrefix = item.FunctionPrefix;
if (item.FunctionPrefix == "##")
{
functionType = "Standard Function";
}
if (item.FunctionPrefix == "@@")
{
functionType = "Instruction Function";
}
if (item.FunctionPrefix == "$$")
{
functionType = "Scope Function";
functionPrefix = string.Empty;
}
string topic = $"Wiki Help :: {item.ProperName}";
if (functionType == "Instruction Function")
{
topic = $"Wiki Help :: {item.ProperName} - Instruction";
}
string navigation = CanonicalNavigation.CleanAndValidate(topic);
var page = PageRepository.GetPageInfoByNavigation(navigation);
if (page == null)
{
var html = new System.Text.StringBuilder();
html.AppendLine("@@draft");
html.AppendLine("@@protect(true)");
html.AppendLine("##Image(Wiki Help :: Wiki Help/TightWiki Logo.png, 15)");
html.AppendLine($"##title ##Tag(Official-Help, Help, Wiki, Official, {functionType})");
html.AppendLine("{{Card(Default, Table of Contents) ##toc }}");
html.AppendLine("");
html.AppendLine("${metaColor = #ee2401}");
html.AppendLine("${keywordColor = #318000}");
html.AppendLine("${identifierColor = #c6680e}");
html.AppendLine("==Overview");
html.AppendLine($"The {item.ProperName} {functionType.ToLower()} is !!FILL_IN_THE_BLANK!!");
html.AppendLine("");
html.AppendLine("");
html.AppendLine("==Prototype");
html.Append($"##Color(${{keywordColor}}, **#{{ {functionPrefix}{item.ProperName} }}#**)");
if ((item.Value.Parameters?.Count ?? 0) == 0)
{
html.AppendLine("()");
}
else
{
html.Append("(");
foreach (var p in item.Value.Parameters)
{
html.Append($"##Color(${{keywordColor}}, {p.Type}{(p.IsInfinite ? ":Infinite" : "")})");
if (p.IsRequired)
{
html.Append($" [##Color(${{identifierColor}}, {p.Name})]");
}
else
{
html.Append($" {{##Color(${{identifierColor}}, {p.Name})}}");
}
html.Append(", ");
}
html.Length -= 3;
html.Append(")");
}
html.AppendLine("");
html.AppendLine("");
html.AppendLine("");
html.AppendLine("===Parameters");
html.AppendLine("{{Bullets");
if (item.Value.Parameters.Count == 0)
{
html.AppendLine($"None.");
}
foreach (var p in item.Value.Parameters)
{
html.AppendLine($"**Name:** ##Color(${{identifierColor}}, {p.Name}) ##Color(${{metaColor}}, {(p.IsRequired ? "[Required]" : "{Optional}")})");
html.AppendLine($">**Type:** ##Color(${{keywordColor}}, {p.Type}{(p.IsInfinite ? ":Infinite" : "")})");
if (string.IsNullOrEmpty(p.DefaultValue) == false)
{
html.AppendLine($">**Default:** ##Color(${{identifierColor}}, {p.DefaultValue})");
}
if (p.AllowedValues != null)
{
html.AppendLine($">**Values:** ##Color(${{identifierColor}}, \"{string.Join(", ", p.AllowedValues)}\")");
}
html.AppendLine($">**Description:** !!FILL_IN_THE_BLANK!!");
}
html.AppendLine("}}");
html.AppendLine("");
html.AppendLine("==Examples");
html.AppendLine("{{Code(wiki)#{");
if (item.FunctionPrefix == "$$")
{
html.Append("{{ " + $"{item.ProperName}");
if ((item.Value.Parameters?.Count ?? 0) == 0)
{
html.AppendLine("()");
}
else
{
html.AppendLine($"({string.Join(", ", item.Value.Parameters.Select(o => o.Name))})");
}
html.AppendLine("This is the body content of the function scope.");
html.AppendLine("}}");
}
else
{
html.Append($"{item.FunctionPrefix}{item.ProperName}");
if ((item.Value.Parameters?.Count ?? 0) == 0)
{
html.AppendLine("()");
}
else
{
html.AppendLine($"({string.Join(", ", item.Value.Parameters.Select(o => o.Name))})");
}
}
html.AppendLine("}#}}");
html.AppendLine("");
html.AppendLine("==See Also");
html.AppendLine("[[Wiki Help :: Function Calling Convention]]");
html.AppendLine("[[Wiki Help :: Scope Function]]");
html.AppendLine("[[Wiki Help :: Instruction Function]]");
html.AppendLine("[[Wiki Help :: Standard Function]]");
html.AppendLine("");
html.AppendLine("");
html.AppendLine("==Related");
html.AppendLine("##related");
page = new Page()
{
Navigation = navigation,
Name = topic,
Description = $"Documentation of the built-in {item.ProperName.ToLower()} {functionType.ToLower()} !!FILL_IN_THE_BLANK!!.",
CreatedByUserId = 1,
CreatedDate = DateTime.UtcNow,
ModifiedByUserId = 1,
ModifiedDate = DateTime.UtcNow,
Body = html.ToString()
};
PageRepository.SavePage(page);
}
}
*/
}
}
}