Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 4
0
        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());
        }
Exemplo n.º 5
0
        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());
        }
Exemplo n.º 6
0
        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());
        }
Exemplo n.º 7
0
        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());
        }