public virtual void GenerateDynamicApi(DynamicApi api, CodeWriter s) { GenerateUsings(s); s.AppendLine($"namespace {NameSpace}"); s.Block(() => { s.Out($"public partial class {api.ClassName}"); s.Block(() => { s.Break(); foreach (var decl in api.Declarations) { try { if (decl.ManualOverride || decl.Ignore) { continue; } GenerateApiFunction(decl, s); } catch (Exception e) { s.Out("// Error generating delaration: " + decl.Name); s.Out("// Message: " + e.Message); s.Out("/*"); s.Out(e.StackTrace); s.Out("----------------------------"); s.Out("Declaration JSON:"); s.Out(JObject.FromObject(decl).ToString(Formatting.Indented)); s.Out("*/"); } } }); }); }
public DynamicApi GetMethod(string name) { int index = name.IndexOf("_"); if (index == -1) { return(null); } var paymentname = name.Substring(0, index); var methodname = name.Substring(index + 1); var paymentmethod = PaymentManager.GetMethod(paymentname); if (paymentmethod != null) { DynamicApi api = new DynamicApi(); api.Type = this.GetType(); api.Method = this.GetType().GetMethod("Callback"); return(api); } return(null); }
private void ParseDynamicApi(string uri, string classname, string partial_name = null, string stop_at = null) { Console.WriteLine("Parsing: " + uri); var doc = LoadDoc(uri); var api = new DynamicApi() { ClassName = classname, // name of the class to generate PartialName = partial_name, }; _generator.DynamicApis.Add(api); var testfile = new TestFile() { Name = $"{api.ClassName}_{api.PartialName}" }; _generator.TestFiles.Add(testfile); HtmlNode class_node = null; foreach (var node in doc.DocumentNode.Descendants("dl").Where(x => x.Attributes["class"]?.Value == "class")) { var code = node.Descendants("code").FirstOrDefault(y => y.Attributes["class"]?.Value == "descname"); if (code.InnerText.Trim() == classname) { class_node = node; break; } } var nodes = class_node.Descendants("dl") .Where(x => x.Attributes["class"]?.Value == "method") .ToList(); var stopped = false; foreach (var node in nodes) { var dd = node.Descendants("dd").FirstOrDefault(); if (dd.InnerText.Contains("See torch.") || dd.InnerText.Contains("In-place version")) { continue; } var decl = new Function() { ClassName = classname }; //ParseFunctionName(decl, node); //ParseDocString(decl, node); //if (ManualOverride.Contains(decl.Name)) continue; //if (!InMigrationApiList(decl.Name)) continue; //ParseReturnValue(decl, node); //ParseArguments(decl, node); //ParseDefaultValues(decl, node); //PostProcess(decl); if (stop_at != null && decl.Name == stop_at) { stopped = true; } if (stopped) { decl.Ignore = stopped; } //foreach (var d in InferOverloads(decl)) //api.Declarations.Add(d); // see if there are any examples which we can convert to test cases //var testcase = ParseTests(decl, node); //if (testcase != null) //testfile.TestCases.Add(testcase); } }