public LuaFunctionInfo FetchFunctionInfo(int pageid, string name) { Console.WriteLine($" Fetching function: {name} - {pageid}"); var root = FetchPage(pageid); var info = LuaFunctionInfo.ConvertRoot(root); if (info != null) { info.Name = name; } return(info); }
public List <LuaFunctionInfo> FetchFunctionInfo(Dictionary <int, string> dict) { Console.WriteLine(" Fetching functions - " + String.Join(", ", dict.Values)); var pages = FetchPages(dict.Keys.ToArray()); var infos = new List <LuaFunctionInfo>(); foreach (var entry in pages) { var info = LuaFunctionInfo.ConvertRoot(entry.Value); if (info != null) { info.Name = dict[entry.Key]; infos.Add(info); } } return(infos); }
public static LuaFunctionInfo ConvertRoot(XRoot root) { bool isFunction = false; var info = new LuaFunctionInfo(); foreach (var template in root.Templates) { var translated = TranslateTemplate.Translate(template); if (translated is FuncTemplate func) { isFunction = true; info.Description = func.Description; } else if (translated is ArgTemplate arg) { var argumentDeclaration = new IDescribeArgument { Name = arg.Name, Type = TranslateType(arg.Type), Description = arg.Desc }; if (!string.IsNullOrWhiteSpace(arg.Default)) { argumentDeclaration.Attributes.Add(new CodeAttributeDeclaration(nameof(OptionalAttribute))); } info.Arguments.Add(argumentDeclaration); } else if (translated is RetTemplate ret) { info.Returns.Add(new IDescribeReturn { Type = TranslateType(ret.Type), Description = ret.Desc }); } else if (translated is ExampleTemplate example) { info.Examples.Add(example); } } if (!isFunction) { return(null); } return(info); }