public string GetSingleTypeValue(Expression expression) { string formattedString; string expressionType = GeneratorHelper.StripObjectReference(expression.Type); switch (expressionType) { case "System.Guid": formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); return(XmlConvert.ToString(Guid.Parse(formattedString))); case "System.TimeSpan": formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); return(XmlConvert.ToString(TimeSpan.Parse(formattedString))); case "System.DateTimeOffset": if (expression.Value == "{System.DateTimeOffset}") { //Fix: for some reason the expression.Value is not being set correctly //More details can be found here https://connect.microsoft.com/VisualStudio/feedback/details/1159889 formattedString = GeneratorHelper.GetBugFixedDateTimeOffset(expression); } else { formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); } return(XmlConvert.ToString(DateTimeOffset.Parse(formattedString))); case "System.DateTime": formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); return(XmlConvert.ToString(DateTime.Parse(formattedString))); case "System.Char": case "char": string charValue = Converter.GetCharAsciiCode(expression.Value); //Retrieve the CharValue as a number return(charValue); case "System.Decimal": case "decimal": return(Converter.GetDecimal(expression.Value)); case "System.Single": case "float": return(Converter.GetFloat(expression.Value)); default: return(""); } }
public string GetSingleTypeValue(Expression expression) { string formattedString; string expressionType = GeneratorHelper.StripObjectReference(expression.Type); switch (expressionType) { case "System.Guid": formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); return(String.Format("new Guid(\"{0}\")", formattedString)); case "System.TimeSpan": formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); TimeSpan timeSpan = TimeSpan.Parse(formattedString); return(String.Format("new TimeSpan({0}, {1}, {2}, {3}, {4})", timeSpan.Days, timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds)); case "System.DateTimeOffset": if (expression.Value == "{System.DateTimeOffset}") { //NOTE: for some reason the expression.Value is not being set correctly //More details can be found here https://connect.microsoft.com/VisualStudio/feedback/details/1159889 formattedString = GeneratorHelper.GetBugFixedDateTimeOffset(expression); } else { formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); } DateTimeOffset dateTimeOffset = DateTimeOffset.Parse(formattedString); return(String.Format("new DateTimeOffset({0}, {1}, {2}, {3}, {4}, {5}, {6}, new TimeSpan({7}, {8}, {9}, {10}, {11}))", dateTimeOffset.Year, dateTimeOffset.Month, dateTimeOffset.Day, dateTimeOffset.Hour, dateTimeOffset.Minute, dateTimeOffset.Second, dateTimeOffset.Millisecond, dateTimeOffset.Offset.Days, dateTimeOffset.Offset.Hours, dateTimeOffset.Offset.Minutes, dateTimeOffset.Offset.Seconds, dateTimeOffset.Millisecond)); case "System.DateTime": formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); DateTime dateTime = DateTime.Parse(formattedString); return(String.Format("new DateTime({0}, {1}, {2}, {3}, {4}, {5}, {6})", dateTime.Year, dateTime.Month, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second)); case "System.Decimal": case "decimal": return(Converter.GetDecimalWithLiteral(expression.Value)); case "System.Char": case "char": string charValue = Converter.GetCharWithLiteral(expression.Value); //Retrieve Character Value as a Letter return(charValue); case "System.Single": case "float": return(Converter.GetFloatWithLiteral(expression.Value)); default: return(""); } }
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 string GetSingleTypeValue(Expression expression) { string formattedString; string expressionType = GeneratorHelper.StripObjectReference(expression.Type); switch (expressionType) { case "System.Guid": formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); return(String.Format("\"{0}\"", formattedString)); case "System.TimeSpan": formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); return(String.Format("\"{0}\"", formattedString)); case "System.DateTimeOffset": if (expression.Value == "{System.DateTimeOffset}") { //Fix: for some reason the expression.Value is not being set correctly //More details can be found here https://connect.microsoft.com/VisualStudio/feedback/details/1159889 formattedString = GeneratorHelper.GetBugFixedDateTimeOffset(expression); } else { formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); } DateTimeOffset currentOffset = DateTimeOffset.Parse(formattedString); return(String.Format("\"{0}\"", XmlConvert.ToString(currentOffset))); case "System.DateTime": formattedString = GeneratorHelper.StripCurleyBraces(expression.Value); DateTime currentDateTime = DateTime.Parse(formattedString); return(String.Format("\"{0}\"", XmlConvert.ToString(currentDateTime))); case "System.Char": case "char": string charValue = Converter.GetCharWithLiteral(expression.Value); //Retrieve Character Value as a Letter if (charValue == "'\\0'") { charValue = "\"\\u0000\""; } else { charValue = charValue.Replace("'", "\""); } return(charValue); case "System.Decimal": case "decimal": return(Converter.GetDecimal(expression.Value)); case "System.Single": case "float": return(Converter.GetFloat(expression.Value)); default: return(""); } }
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.StripChildReference(expression.Type); } else { //members of objects have a type of: object { theType } - strip out object { } expressionType = GeneratorHelper.StripObjectReference(expression.Type); } if (!GeneratorHelper.IsSerializable(expressionName)) { return; } else if (CanBeExpressedAsSingleType(expressionType)) { WriteLine(""); if (GeneratorHelper.IsCollectionMember(expressionName)) { #line default #line hidden #line 50 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetSingleTypeValue(expression) + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 50 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } else { #line default #line hidden #line 54 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionName)); #line default #line hidden #line 54 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(" = "); #line default #line hidden #line 54 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetSingleTypeValue(expression) + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 54 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } } else if (expression.DataMembers.Count == 0) { WriteLine(""); if (GeneratorHelper.IsCollectionMember(expressionName)) { #line default #line hidden #line 62 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Value + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 62 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } else { #line default #line hidden #line 66 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionName)); #line default #line hidden #line 66 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(" = "); #line default #line hidden #line 66 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expression.Value + GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 66 "C:\Users\Arel\Documents\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 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionName)); #line default #line hidden #line 83 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(" = new "); #line default #line hidden #line 83 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionType)); #line default #line hidden #line 83 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" WriteLine(""); #line default #line hidden #line 84 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write("{"); #line default #line hidden #line 84 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } else { #line default #line hidden #line 88 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write("new "); #line default #line hidden #line 88 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(expressionType)); #line default #line hidden #line 88 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" WriteLine(""); #line default #line hidden #line 89 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write("{"); #line default #line hidden #line 89 "C:\Users\Arel\Documents\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 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write("}"); #line default #line hidden #line 103 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" #line default #line hidden #line 104 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GeneratorHelper.WriteCommaIfNotLast(isLast))); #line default #line hidden #line 104 "C:\Users\Arel\Documents\GitHub\ObjectExporter\ObjectExporter.Core\Templates\CSharpGenerator.tt" } }