Пример #1
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"
            }
        }
Пример #2
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"
            }
        }