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" } }
public void ExportMembers(Expression expression, int currentDepth) { string expressionType; if (isFirstElement) //TODO: can probably replace isFirstElement with currentDepth = 0 { //Frameworks can add theType { dynamicType} - strip out the {dynamic type} expressionType = GeneratorHelper.StripChildReference(expression.Type); } else { //members of objects have a type of: object { theType } - strip out object { } expressionType = GeneratorHelper.StripObjectReference(expression.Type); } if (!GeneratorHelper.IsSerializable(expression.Name)) { return; } else if (expression.Value == "null") { return; } else if (GeneratorHelper.CanBeExpressedAsSingleType(expressionType)) { WriteLine(""); if (GeneratorHelper.IsCollectionMember(expression.Name)) { #line default #line hidden #line 41 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write("<"); #line default #line hidden #line 41 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionType)); #line default #line hidden #line 41 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(">"); #line default #line hidden #line 41 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetSingleTypeValue(expression))); #line default #line hidden #line 41 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write("</"); #line default #line hidden #line 41 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionType)); #line default #line hidden #line 41 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(">"); #line default #line hidden #line 41 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" } else { #line default #line hidden #line 45 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write("<"); #line default #line hidden #line 45 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Name)); #line default #line hidden #line 45 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(">"); #line default #line hidden #line 45 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetSingleTypeValue(expression))); #line default #line hidden #line 45 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write("</"); #line default #line hidden #line 45 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Name)); #line default #line hidden #line 45 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(">"); #line default #line hidden #line 45 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" } } else if (expression.DataMembers.Count == 0) { WriteLine(""); string node = expression.Name; if (GeneratorHelper.IsCollectionMember(expression.Name)) { node = expressionType; } #line default #line hidden #line 57 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write("<"); #line default #line hidden #line 57 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(node)); #line default #line hidden #line 57 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(">"); #line default #line hidden #line 57 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Value)); #line default #line hidden #line 57 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write("</"); #line default #line hidden #line 57 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(node)); #line default #line hidden #line 57 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(">"); #line default #line hidden #line 57 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.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(""); } string node = expressionType; if (GeneratorHelper.IsTypeOfCollection(expressionType) && !GeneratorHelper.IsCollectionMember(expression.Name)) { node = expression.Name; } List <Expression> cleanedExpressionMembers = GeneratorHelper.SanitizeExpressions(expression, _ruleSetValidator, expressionType); #line default #line hidden #line 79 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write("<"); #line default #line hidden #line 79 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(node)); #line default #line hidden #line 79 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(">"); #line default #line hidden #line 79 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" foreach (Expression exp in cleanedExpressionMembers) { PushIndent("\t"); ExportMembers(exp, currentDepth + 1); PopIndent(); } WriteLine(""); #line default #line hidden #line 87 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write("</"); #line default #line hidden #line 87 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(node)); #line default #line hidden #line 87 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" this.Write(">"); #line default #line hidden #line 87 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\XmlGenerator.tt" } }
public void ExportMembers(Expression expression, int currentDepth, bool isLast) { 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(expression.Name)) { return; } else if (GeneratorHelper.CanBeExpressedAsSingleType(expressionType)) { WriteLine(""); if (GeneratorHelper.IsCollectionMember(expression.Name)) { #line default #line hidden #line 37 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetSingleTypeValue(expression) + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 37 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" } else { #line default #line hidden #line 41 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write("\""); #line default #line hidden #line 41 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Name)); #line default #line hidden #line 41 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write("\": "); #line default #line hidden #line 41 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetSingleTypeValue(expression) + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 41 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" } } else if (expression.DataMembers.Count == 0) { WriteLine(""); if (GeneratorHelper.IsCollectionMember(expression.Name)) { #line default #line hidden #line 49 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Value + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 49 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" } else { #line default #line hidden #line 53 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write("\""); #line default #line hidden #line 53 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Name)); #line default #line hidden #line 53 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write("\": "); #line default #line hidden #line 53 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Value + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 53 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.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.IsCollectionMember(expression.Name) && GeneratorHelper.IsTypeOfCollection(expressionType)) { #line default #line hidden #line 70 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write("["); #line default #line hidden #line 70 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" } else if (GeneratorHelper.IsTypeOfCollection(expressionType)) { #line default #line hidden #line 74 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write("\""); #line default #line hidden #line 74 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Name)); #line default #line hidden #line 74 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write("\": "); #line default #line hidden #line 74 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" WriteLine(""); #line default #line hidden #line 75 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write("["); #line default #line hidden #line 75 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" } else { #line default #line hidden #line 79 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write("{"); #line default #line hidden #line 79 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.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(); } TerminateObjectOrCollection(expressionType); #line default #line hidden #line 93 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 93 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" this.Write(" "); #line default #line hidden #line 93 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt" } }