Ejemplo n.º 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());
        }
Ejemplo n.º 2
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"
            }
        }