Пример #1
0
        /// <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());
        }
Пример #2
0
        private void TerminateObjectOrCollection(string expressionType)
        {
            WriteLine("");
            if (GeneratorHelper.IsTypeOfCollection(expressionType))
            {
        #line default
        #line hidden

        #line 102 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt"
                this.Write("]");


        #line default
        #line hidden

        #line 102 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt"
            }
            else
            {
        #line default
        #line hidden

        #line 106 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt"
                this.Write("}");


        #line default
        #line hidden

        #line 106 "H:\Dropbox\GitHub\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt"
            }
        }
Пример #3
0
        private void TerminateObjectOrCollection(string expressionType)
        {
            WriteLine("");
            if (GeneratorHelper.IsTypeOfCollection(expressionType))
            {
        #line default
        #line hidden

        #line 102 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt"
                this.Write("]");


        #line default
        #line hidden

        #line 102 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt"
            }
            else
            {
        #line default
        #line hidden

        #line 106 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt"
                this.Write("}");


        #line default
        #line hidden

        #line 106 "C:\Users\Ttaylor\Source\Repos\ObjectExporter\ObjectExporter.Core\Templates\JsonGenerator.tt"
            }
        }
Пример #4
0
        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("");
            }
        }
Пример #5
0
        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("");
            }
        }
Пример #6
0
        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"
            }
        }
Пример #7
0
        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"
            }
        }
Пример #8
0
        public string GetSingleTypeValue(Expression expression)
        {
            string formattedString;

            string expressionType = GeneratorHelper.GetBaseClassFromType(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("");
            }
        }
Пример #9
0
        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"
            }
        }