public void Given_Not_Extracting_GeneratedCode_And_Return_Public_Class_Declaration_As_ListOfStrings() { //Arrange OutputHelper outputHelper = this.CreateOutputHelper(); //Act bool extractFiles = false; string propString = "private string millisObj; public void setMillis(string millisObj){this.millisObj = millisObj;} public string getMillis(){return this.millisObj;}"; var lst = new List <string>() { propString }; Dictionary <string, List <string> > jTokenDic = new Dictionary <string, List <string> >() { { "ClassObj", lst } }; LanAttributes props = LanAttributes.None; LanguageEnum lan = LanguageEnum.CSharp; string path = @"c:\tmp"; string namespaceMapping = "namespace"; var result = outputHelper.GenerateCodeList(extractFiles, jTokenDic, path, lan, props, namespaceMapping); //Assert Assert.IsNotNull(result); }
public string GenerateForLanguage(LanguageEnum lan, JProperty type, LanAttributes props) { string _lan = string.Empty; _lan = CodeDto(lan, type, props); return(_lan); }
public void Given_A_JProperty_Must_Return_CSharpProperties() { //Arrange OutputHelper outputHelper = this.CreateOutputHelper(); JObject jsonObject = new JObject(new JProperty("Object", "10")); LanAttributes props = LanAttributes.None; //Act var result = outputHelper.GenerateForLanguage(Core.Enums.LanguageEnum.CSharp, jsonObject.Property("Object"), props); //Assert Assert.IsNotNull(result); }
// use this for both language private string BuildFor_Code_Props(string prop, JProperty jsonObj, LanAttributes props, LanguageEnum lan) { StringBuilder setgetBuilder = new StringBuilder { Length = 0, Capacity = 0 }; string instance = FirstCharToLower(jsonObj.Name); string classObj = FirstCharToUpper(jsonObj.Name); string quate = @""""; if (lan != LanguageEnum.PHP) { switch (props) { case LanAttributes.None: setgetBuilder.AppendLine(" private " + prop + " " + instance + ";"); break; case LanAttributes.DataContract: setgetBuilder.AppendLine(" [DataMember(Name = " + quate + instance + quate + ")]"); setgetBuilder.AppendLine(" private " + prop + " " + instance + ";"); break; case LanAttributes.Json: setgetBuilder.AppendLine(" [JsonProperty(" + quate + instance + quate + ")]"); setgetBuilder.AppendLine(" private " + prop + " " + instance + ";"); break; } } else if (lan == LanguageEnum.PHP) { if (prop.Equals("array")) { setgetBuilder.AppendLine(" private $" + instance + "s; //" + prop + "(" + instance + ")"); } else { setgetBuilder.AppendLine(" private $" + instance + "; //" + prop); } } if (lan != LanguageEnum.PHP) { //remember type array php if (jsonObj.Name.Equals("long")) { setgetBuilder.AppendLine(" public void Set" + classObj + "(" + prop + " " + "@long" + ")"); } else if (jsonObj.Name.Equals("int")) { setgetBuilder.AppendLine(" public void Set" + classObj + "(" + prop + " " + "@int" + ")"); } else if (jsonObj.Name.Equals("short")) { setgetBuilder.AppendLine(" public void Set" + classObj + "(" + prop + " " + "@short" + ")"); } else if (jsonObj.Name.Equals("float")) { setgetBuilder.AppendLine(" public void Set" + classObj + "(" + prop + " " + "@float" + ")"); } else if (jsonObj.Name.Equals("double")) { setgetBuilder.AppendLine(" public void Set" + classObj + "(" + prop + " " + "@double" + ")"); } else { setgetBuilder.AppendLine(" public void Set" + classObj + "(" + prop + " " + FirstCharToLower(jsonObj.Name) + ")"); } setgetBuilder.AppendLine(" {"); if (jsonObj.Name.Equals("long")) { setgetBuilder.AppendLine(" this." + instance + "=" + "@long" + ";"); } else if (jsonObj.Name.Equals("int")) { setgetBuilder.AppendLine(" this." + instance + "=" + "@int" + ";"); } else if (jsonObj.Name.Equals("short")) { setgetBuilder.AppendLine(" this." + instance + "=" + "@short" + ";"); } else if (jsonObj.Name.Equals("float")) { setgetBuilder.AppendLine(" this." + instance + "=" + "@float" + ";"); } else if (jsonObj.Name.Equals("double")) { setgetBuilder.AppendLine(" this." + instance + "=" + "@double" + ";"); } else { setgetBuilder.AppendLine(" this." + instance + "=" + FirstCharToLower(jsonObj.Name) + ";"); } setgetBuilder.AppendLine(" }"); setgetBuilder.AppendLine(); setgetBuilder.AppendLine(" public " + prop + " Get" + classObj + "()"); setgetBuilder.AppendLine(" {"); setgetBuilder.AppendLine(" return this." + instance + ";"); setgetBuilder.AppendLine(" }"); } else if (lan == LanguageEnum.PHP) { setgetBuilder.AppendLine(" public function Set" + classObj + "($" + FirstCharToLower(jsonObj.Name) + ")"); setgetBuilder.AppendLine(" {"); setgetBuilder.AppendLine(" $this->" + instance + "=$" + FirstCharToLower(jsonObj.Name) + ";"); setgetBuilder.AppendLine(" }"); setgetBuilder.AppendLine(); setgetBuilder.AppendLine(" public function Get" + classObj + "()"); setgetBuilder.AppendLine(" {"); setgetBuilder.AppendLine(" return $this->" + instance + ";"); setgetBuilder.AppendLine(" }"); } return(setgetBuilder.ToString()); }
private string CodeDto(LanguageEnum lan, JProperty jsonObj, LanAttributes props) { string prop = ExtractLanProperties(lan, jsonObj); return(BuildFor_Code_Props(prop, jsonObj, props, lan)); }
public List <string> GenerateCodeList(bool extractfiles, Dictionary <string, List <string> > checkClassNamesDic, string path, LanguageEnum lan, LanAttributes prop, string namespaceMapping) { StringBuilder codeBuilder = new StringBuilder(); List <string> codeList = new List <string>(); //goes for lan c# and java StringBuilder cSharpUsings = new StringBuilder() { Capacity = 0, Length = 0 }; cSharpUsings.AppendLine("using System;"); cSharpUsings.AppendLine("using System.Collections.Generic;"); StringBuilder javaUsings = new StringBuilder() { Capacity = 0, Length = 0 }; javaUsings.AppendLine("import java.util.Date;"); javaUsings.AppendLine("import java.util.ArrayList;"); ///Meaning that we have chosen Datacontracts and DataMembers switch (prop) { case LanAttributes.None: break; case LanAttributes.DataContract: cSharpUsings.AppendLine("using System.Runtime.Serialization;"); break; case LanAttributes.Json: cSharpUsings.AppendLine("using Newtonsoft.Json;"); break; } string lanClassDef = string.Empty; string lanbracesStart = string.Empty; string lanBrracesEnd = string.Empty; switch (lan) { case LanguageEnum.CSharp: //using for C# class lanClassDef = " public class"; lanbracesStart = " {"; lanBrracesEnd = " }"; break; case LanguageEnum.PHP: //using for PHP class lanClassDef = " class"; lanbracesStart = " {"; lanBrracesEnd = " }"; break; case LanguageEnum.Java: //using for jAVA class lanClassDef = " public class"; lanbracesStart = " {"; lanBrracesEnd = " }"; break; } foreach (KeyValuePair <string, List <string> > codeClassItem in checkClassNamesDic) { switch (lan) { case LanguageEnum.CSharp: //using for C# class codeBuilder.AppendLine(cSharpUsings.ToString()); break; case LanguageEnum.PHP: break; case LanguageEnum.Java: //using for jAVA class codeBuilder.AppendLine(javaUsings.ToString()); break; } switch (lan) { case LanguageEnum.CSharp: //using for C# class if (!string.IsNullOrEmpty(namespaceMapping)) { codeBuilder.AppendLine("namespace " + namespaceMapping + "\n{"); } break; case LanguageEnum.PHP: break; case LanguageEnum.Java: if (!string.IsNullOrEmpty(namespaceMapping)) { codeBuilder.AppendLine("package " + namespaceMapping + ";"); } break; } switch (prop) { case LanAttributes.None: break; case LanAttributes.DataContract: codeBuilder.AppendLine(" [DataContract]"); break; case LanAttributes.Json: break; } codeBuilder.AppendLine(lanClassDef + " " + codeClassItem.Key); codeBuilder.AppendLine(lanbracesStart); codeClassItem.Value.ForEach(delegate(string props) { codeBuilder.AppendLine(" " + props); }); codeBuilder.AppendLine(lanBrracesEnd); switch (lan) { case LanguageEnum.CSharp: //using for C# class if (!string.IsNullOrEmpty(namespaceMapping)) { codeBuilder.AppendLine("\n}"); } break; } var sanitizer = new HtmlSanitizer(); var sanitized = sanitizer.Sanitize(codeBuilder.ToString()); codeList.Add(sanitized); //we need the class to get it from angularjs in the filter and represent it in the accordian codeBuilder.Length = 0; codeBuilder.Capacity = 0; if (extractfiles) { if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } using (TextWriter writer = File.CreateText(path + @"\" + codeClassItem.Key)) { writer.Write(codeBuilder); codeBuilder.Length = 0; } } } return(codeList); }