protected override string ToComputeClient(ClassBuilder cb) { StringBuilder sb = new StringBuilder(); sb.AppendLine(); int iMethod = 0; foreach (var(method, comment) in cb.Methods) { string methodName = GetMethodName(method, cb); if (string.IsNullOrWhiteSpace(methodName)) { continue; } sb.Append($"def {methodName}("); List <string> parameters = GetParameterNames(method, cb); for (int i = 0; i < parameters.Count; i++) { sb.Append(parameters[i] + ", "); } sb.AppendLine("multiple=False):"); StringBuilder summary; List <ParameterInfo> parameterList; ReturnInfo returnInfo; sb.Append(DocCommentToPythonDoc(comment, method, 1, out summary, out parameterList, out returnInfo)); sb.AppendLine($"{T1}url = \"{cb.EndPoint(method)}\""); sb.AppendLine($"{T1}if multiple: url += \"?multiple=true\""); var paramList = new StringBuilder(); for (int i = 0; i < parameters.Count; i++) { paramList.Append(parameters[i]); if (i < (parameters.Count - 1)) { paramList.Append(", "); } } sb.AppendLine($"{T1}args = [{paramList.ToString()}]"); if (parameters.Count == 1) { sb.AppendLine($"{T1}if multiple: args = [[item] for item in {parameters[0]}]"); } else { sb.AppendLine($"{T1}if multiple: args = zip({paramList.ToString()})"); } string endpoint = method.Identifier.ToString(); sb.AppendLine($"{T1}response = Util.ComputeFetch(url, args)"); sb.AppendLine($"{T1}return response"); sb.AppendLine(); iMethod++; if (iMethod < cb.Methods.Count) { sb.AppendLine(); } } return(sb.ToString()); }
protected override string ToComputeClient(ClassBuilder cb) { StringBuilder sb = new StringBuilder(); sb.AppendLine(); sb.AppendLine($"{T1}{cb.ClassName} : {{"); int iMethod = 0; int overloadIndex = 0; string prevMethodName = ""; foreach (var(method, comment) in cb.Methods) { string methodName = CamelCase(method.Identifier.ToString()); if (methodName.Equals("dispose", StringComparison.InvariantCultureIgnoreCase)) { continue; } if (methodName.Equals(prevMethodName)) { overloadIndex++; methodName = $"{methodName}{overloadIndex}"; } else { overloadIndex = 0; prevMethodName = methodName; } sb.Append($"{T2}{methodName} : function("); List <string> parameters = new List <string>(); if (!method.IsStatic()) { parameters.Add(cb.ClassName.ToLower()); } for (int i = 0; i < method.ParameterList.Parameters.Count; i++) { bool isOutParamter = false; foreach (var modifier in method.ParameterList.Parameters[i].Modifiers) { if (modifier.Text == "out") { isOutParamter = true; } } if (!isOutParamter) { parameters.Add(method.ParameterList.Parameters[i].Identifier.ToString()); } } for (int i = 0; i < parameters.Count; i++) { sb.Append(parameters[i]); if (i < (parameters.Count - 1)) { sb.Append(", "); } } sb.AppendLine(", multiple=false) {"); sb.AppendLine($"{T3}let url=\"{cb.EndPoint(method)}\";"); sb.AppendLine($"{T3}if(multiple) url = url + \"?multiple=true\""); sb.Append($"{T3}let args = RhinoCompute.zipArgs(multiple, "); for (int i = 0; i < parameters.Count; i++) { sb.Append(parameters[i]); if (i < (parameters.Count - 1)) { sb.Append(", "); } } sb.AppendLine(");"); string endpoint = method.Identifier.ToString(); sb.AppendLine($"{T3}var promise = RhinoCompute.computeFetch(url, args);"); sb.AppendLine($"{T3}return promise;"); sb.AppendLine($"{T2}}},"); iMethod++; if (iMethod < cb.Methods.Count) { sb.AppendLine(); } } sb.AppendLine($"{T1}}},"); return(sb.ToString()); }
protected override string ToComputeClient(ClassBuilder cb) { StringBuilder sb = new StringBuilder(); sb.AppendLine(); sb.AppendLine($"{T1}{cb.ClassName} : {{"); int iMethod = 0; foreach (var(method, comment) in cb.Methods) { string methodName = GetMethodName(method, cb); if (string.IsNullOrWhiteSpace(methodName)) { continue; } sb.Append($"{T2}{methodName} : function("); List <string> parameters = new List <string>(); for (int i = 0; i < method.ParameterList.Parameters.Count; i++) { bool isOutParamter = false; foreach (var modifier in method.ParameterList.Parameters[i].Modifiers) { if (modifier.Text == "out") { isOutParamter = true; } } if (!isOutParamter) { parameters.Add(method.ParameterList.Parameters[i].Identifier.ToString()); } } if (!method.IsStatic()) { string paramName = cb.ClassName.ToLower(); // make sure this paramName is not already in the parameter list for (int i = 0; i < parameters.Count; i++) { if (paramName.Equals(parameters[i], StringComparison.OrdinalIgnoreCase)) { paramName = "_" + paramName; break; } } parameters.Insert(0, paramName); } for (int i = 0; i < parameters.Count; i++) { sb.Append(parameters[i]); if (i < (parameters.Count - 1)) { sb.Append(", "); } } sb.AppendLine(", multiple=false) {"); sb.AppendLine($"{T3}let url=\"{cb.EndPoint(method)}\";"); sb.AppendLine($"{T3}if(multiple) url = url + \"?multiple=true\""); sb.Append($"{T3}let args = RhinoCompute.zipArgs(multiple, "); for (int i = 0; i < parameters.Count; i++) { sb.Append(parameters[i]); if (i < (parameters.Count - 1)) { sb.Append(", "); } } sb.AppendLine(");"); string endpoint = method.Identifier.ToString(); sb.AppendLine($"{T3}var promise = RhinoCompute.computeFetch(url, args);"); sb.AppendLine($"{T3}return promise;"); sb.AppendLine($"{T2}}},"); iMethod++; if (iMethod < cb.Methods.Count) { sb.AppendLine(); } } sb.AppendLine($"{T1}}},"); return(sb.ToString()); }
protected override string ToComputeClient(ClassBuilder cb) { StringBuilder sb = new StringBuilder(); sb.AppendLine(); int iMethod = 0; int overloadIndex = 0; string prevMethodName = ""; foreach (var(method, comment) in cb.Methods) { string methodName = method.Identifier.ToString(); if (methodName.Equals("dispose", StringComparison.InvariantCultureIgnoreCase)) { continue; } if (methodName.Equals(prevMethodName)) { overloadIndex++; methodName = $"{methodName}{overloadIndex}"; } else { overloadIndex = 0; prevMethodName = methodName; } sb.Append($"def {methodName}("); List <string> parameters = new List <string>(); if (!method.IsStatic()) { parameters.Add("this" + cb.ClassName); } for (int i = 0; i < method.ParameterList.Parameters.Count; i++) { parameters.Add(method.ParameterList.Parameters[i].Identifier.ToString()); } for (int i = 0; i < parameters.Count; i++) { sb.Append(parameters[i]); if (i < (parameters.Count - 1)) { sb.Append(", "); } } sb.AppendLine(", multiple=False):"); sb.AppendLine($"{T1}url = \"{cb.EndPoint(method)}\""); sb.AppendLine($"{T1}if multiple: url += \"?multiple=true\""); var paramList = new StringBuilder(); for (int i = 0; i < parameters.Count; i++) { paramList.Append(parameters[i]); if (i < (parameters.Count - 1)) { paramList.Append(", "); } } sb.AppendLine($"{T1}args = [{paramList.ToString()}]"); sb.AppendLine($"{T1}if multiple: args = zip({paramList.ToString()})"); string endpoint = method.Identifier.ToString(); sb.AppendLine($"{T1}response = Util.ComputeFetch(url, args)"); sb.AppendLine($"{T1}return response"); sb.AppendLine(); iMethod++; if (iMethod < cb.Methods.Count) { sb.AppendLine(); } } return(sb.ToString()); }
protected override string ToComputeClient(ClassBuilder cb) { StringBuilder sb = new StringBuilder(); sb.AppendLine(); int iMethod = 0; foreach (var(method, comment) in cb.Methods) { string methodName = GetMethodName(method, cb); if (string.IsNullOrWhiteSpace(methodName)) { continue; } sb.Append($"def {methodName}("); List <string> parameters = GetParameterNames(method, cb, out int outParamCount); for (int i = 0; i < parameters.Count; i++) { sb.Append(parameters[i] + ", "); } sb.AppendLine("multiple=False):"); StringBuilder summary; List <ParameterInfo> parameterList; ReturnInfo returnInfo; sb.Append(DocCommentToPythonDoc(comment, method, 1, out summary, out parameterList, out returnInfo)); sb.AppendLine($"{T1}url = \"{cb.EndPoint(method)}\""); sb.AppendLine($"{T1}if multiple: url += \"?multiple=true\""); var paramList = new StringBuilder(); for (int i = 0; i < parameters.Count; i++) { paramList.Append(parameters[i]); if (i < (parameters.Count - 1)) { paramList.Append(", "); } } sb.AppendLine($"{T1}args = [{paramList.ToString()}]"); if (parameters.Count == 1) { sb.AppendLine($"{T1}if multiple: args = [[item] for item in {parameters[0]}]"); } else { sb.AppendLine($"{T1}if multiple: args = zip({paramList.ToString()})"); } string endpoint = method.Identifier.ToString(); sb.AppendLine($"{T1}response = Util.ComputeFetch(url, args)"); if (outParamCount == 0) { bool returnIsArray = returnInfo.Type.EndsWith("[]"); string returnClassName = returnIsArray ? returnInfo.Type.Substring(0, returnInfo.Type.Length - 2) : returnInfo.Type; var returnCB = ClassBuilder.Get(returnClassName); if (returnCB != null) { var baseClass = returnCB; while (true) { var b = ClassBuilder.Get(baseClass.BaseClassName); if (b != null) { baseClass = b; continue; } break; } if (baseClass.ClassName == "CommonObject" || baseClass.ClassName == "GeometryBase") { sb.AppendLine($"{T1}response = Util.DecodeToCommonObject(response)"); } if (baseClass.ClassName == "Point3d" || baseClass.ClassName == "Vector3d" || baseClass.ClassName == "Line") { sb.AppendLine($"{T1}response = Util.DecodeTo{baseClass.ClassName}(response)"); } } } sb.AppendLine($"{T1}return response"); sb.AppendLine(); iMethod++; if (iMethod < cb.Methods.Count) { sb.AppendLine(); } } return(sb.ToString()); }
protected override string ToComputeClient(ClassBuilder cb) { StringBuilder sb = new StringBuilder(); sb.AppendLine(); sb.AppendLine($"{T1}{cb.ClassName} : {{"); int iMethod = 0; int overloadIndex = 0; string prevMethodName = ""; foreach (var(method, comment) in cb.Methods) { string methodName = CamelCase(method.Identifier.ToString()); if (methodName.Equals(prevMethodName)) { overloadIndex++; methodName = $"{methodName}{overloadIndex}"; } else { overloadIndex = 0; prevMethodName = methodName; } sb.Append($"{T2}{methodName} : function("); List <string> parameters = new List <string>(); if (!method.IsStatic()) { parameters.Add(cb.ClassName.ToLower()); } for (int i = 0; i < method.ParameterList.Parameters.Count; i++) { parameters.Add(method.ParameterList.Parameters[i].Identifier.ToString()); } for (int i = 0; i < parameters.Count; i++) { sb.Append(parameters[i]); if (i < (parameters.Count - 1)) { sb.Append(", "); } } sb.AppendLine(") {"); sb.Append($"{T3}args = ["); for (int i = 0; i < parameters.Count; i++) { sb.Append(parameters[i]); if (i < (parameters.Count - 1)) { sb.Append(", "); } } sb.AppendLine("];"); string endpoint = method.Identifier.ToString(); sb.AppendLine($"{T3}var promise = RhinoCompute.computeFetch(\"{cb.EndPoint(method)}\", args);"); sb.AppendLine($"{T3}return promise;"); sb.AppendLine($"{T2}}},"); iMethod++; if (iMethod < cb.Methods.Count) { sb.AppendLine(); } } sb.AppendLine($"{T1}}},"); return(sb.ToString()); }
protected override string ToComputeClient(ClassBuilder cb) { StringBuilder sb = new StringBuilder(); sb.AppendLine(); int iMethod = 0; int overloadIndex = 0; string prevMethodName = ""; foreach (var(method, comment) in cb.Methods) { string methodName = method.Identifier.ToString(); if (methodName.Equals(prevMethodName)) { overloadIndex++; methodName = $"{methodName}{overloadIndex}"; } else { overloadIndex = 0; prevMethodName = methodName; } sb.Append($"def {methodName}("); List <string> parameters = new List <string>(); if (!method.IsStatic()) { parameters.Add("this" + cb.ClassName); } for (int i = 0; i < method.ParameterList.Parameters.Count; i++) { parameters.Add(method.ParameterList.Parameters[i].Identifier.ToString()); } for (int i = 0; i < parameters.Count; i++) { sb.Append(parameters[i]); if (i < (parameters.Count - 1)) { sb.Append(", "); } } sb.AppendLine("):"); sb.Append($"{T1}args = ["); for (int i = 0; i < parameters.Count; i++) { sb.Append(parameters[i]); if (i < (parameters.Count - 1)) { sb.Append(", "); } } sb.AppendLine("]"); string endpoint = method.Identifier.ToString(); sb.AppendLine($"{T1}response = Util.ComputeFetch(\"{cb.EndPoint(method)}\", args)"); sb.AppendLine($"{T1}return response"); sb.AppendLine(); iMethod++; if (iMethod < cb.Methods.Count) { sb.AppendLine(); } } return(sb.ToString()); }