/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { #line 9 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" if (CanBeExpressedAsSingleType(objectExpression.Type) || objectExpression.DataMembers.Count == 0) { ExportMembers(objectExpression, 0, true); } else { #line default #line hidden this.Write("var "); #line 16 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GeneratorHelper.ResolveReservedNames(objectExpression.Name))); #line default #line hidden this.Write(" = "); #line 16 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" ExportMembers(objectExpression, 0, true); } #line default #line hidden this.Write(";\r\n"); return(this.GenerationEnvironment.ToString()); }
public void ExportMembers(Expression expression, int currentDepth, bool isLast) { //resolved reserved keywords such as class, this becomes @class. string expressionName = GeneratorHelper.ResolveReservedNames(expression.Name); string expressionType; if (isFirstElement) //TODO: can probably replace isFirstElement with currentDepth = 0 { //Frameworks can add theType { dynamicType} - strip out the {dynamic type} expressionType = GeneratorHelper.GetBaseClassFromType(expression.Type); } else { //members of objects have a type of: object { theType } - strip out object { } expressionType = GeneratorHelper.GetSubClassFromType(expression.Type); } if (!GeneratorHelper.IsSerializable(expressionName)) { return; } else if (CanBeExpressedAsSingleType(expressionType)) { WriteLine(""); if (GeneratorHelper.IsCollectionMember(expressionName)) { #line default #line hidden #line 50 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetSingleTypeValue(expression) + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 50 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } else { #line default #line hidden #line 54 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionName)); #line default #line hidden #line 54 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(" = "); #line default #line hidden #line 54 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetSingleTypeValue(expression) + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 54 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } } else if (expression.DataMembers.Count == 0) { WriteLine(""); if (GeneratorHelper.IsCollectionMember(expressionName)) { #line default #line hidden #line 62 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Value + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 62 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } else { #line default #line hidden #line 66 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionName)); #line default #line hidden #line 66 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(" = "); #line default #line hidden #line 66 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Value + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 66 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } } else if (expression.DataMembers.Count > 0 && currentDepth <= maxDepth) { //used for the very first object (top most) to be completed as var objName = new objType, without a space in between. if (isFirstElement) { isFirstElement = false; } else { WriteLine(""); } if (GeneratorHelper.IsTypeOfCollection(expressionType) && !GeneratorHelper.IsCollectionMember(expressionName)) { #line default #line hidden #line 83 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionName)); #line default #line hidden #line 83 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(" = new "); #line default #line hidden #line 83 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionType)); #line default #line hidden #line 83 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" WriteLine(""); #line default #line hidden #line 84 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write("{"); #line default #line hidden #line 84 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } else { #line default #line hidden #line 88 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write("new "); #line default #line hidden #line 88 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionType)); #line default #line hidden #line 88 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" WriteLine(""); #line default #line hidden #line 89 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write("{"); #line default #line hidden #line 89 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } List <Expression> cleanedExpressionMembers = GeneratorHelper.SanitizeExpressions(expression, _ruleSetValidator, expressionType); foreach (Expression exp in cleanedExpressionMembers) { PushIndent("\t"); bool isLastItem = cleanedExpressionMembers.IsLast(exp); ExportMembers(exp, currentDepth + 1, isLastItem); PopIndent(); } WriteLine(""); #line default #line hidden #line 103 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write("}"); #line default #line hidden #line 103 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" #line default #line hidden #line 104 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 104 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } }