/// <summary> /// Generates JavaScript code from the provided class or interface type. /// </summary> /// <typeparam name="T">Class or interface type.</typeparam> /// <param name="settings">RPC-Js settings used for Javascript code generation.</param> /// <returns>Javascript API.</returns> public static string GenerateCaller <T>(RPCJsSettings <T> settings = null) { settings = settings ?? new RPCJsSettings <T>(); var(tName, mInfos) = JsCallerGenerator.GetMethods(settings.OmittedMethods); tName = settings.NameOverwrite ?? tName; var sb = new StringBuilder(); switch (settings.Format) { case RPCJsSettings <T> .Module.RequireJS: sb.Append(JsCallerGenerator.GenerateRequireJsHeader(tName)); break; case RPCJsSettings <T> .Module.CommonJS: sb.Append(JsCallerGenerator.GenerateCommonJsHeader(tName)); break; } sb.Append(JsCallerGenerator.GenerateHeader(tName)); foreach (var m in mInfos) { var mName = m.Name; var pNames = m.GetParameters().Select(x => x.Name).ToArray(); sb.Append(JsCallerGenerator.GenerateMethod(mName, pNames)); } sb.Append(JsCallerGenerator.GenerateFooter()); return(sb.ToString()); }