public override void GenerateStartBlockCode(Block target, CodeGeneratorContext context)
        {
            if (context.Host.DesignTimeMode)
            {
                return;
            }

            context.FlushBufferedStatement();

            var sb = new StringBuilder();

            if (!string.IsNullOrEmpty(context.TargetWriterName))
            {
                sb.AppendFormat(
                    "{0} ({1}, ",
                    context.Host.GeneratedClassContext.WriteAttributeToMethodName,
                    context.TargetWriterName
                    );
            }
            else
            {
                sb.AppendFormat(
                    "{0} (",
                    context.Host.GeneratedClassContext.WriteAttributeMethodName
                    );
            }
            sb.WriteCStyleStringLiteral(Name);
            sb.Append(", ");
            sb.WriteCStyleStringLiteral(Prefix);
            sb.Append(", ");
            sb.WriteCStyleStringLiteral(Suffix);

            context.AddStatement(sb.ToString());
        }
        public override void GenerateEndBlockCode(Block target, CodeGeneratorContext context)
        {
            if (context.Host.DesignTimeMode)
            {
                return;
            }

            context.FlushBufferedStatement();
            context.AddStatement(");");
        }
Пример #3
0
        public override void GenerateCode(Span target, CodeGeneratorContext context)
        {
            // Build the string
            string code = Prefix + target.Content + ";";

            // Calculate the line pragma including information about where the user-specified code starts and ends (for editors)
            CodeLinePragma pragma = context.GenerateLinePragma(target, Prefix.Length, target.Content.Length);

            // Add the statement
            context.AddStatement(code, pragma);
        }
Пример #4
0
        public override void GenerateEndBlockCode(Block target, CodeGeneratorContext context)
        {
            if (context.Host.DesignTimeMode)
            {
                return;
            }

            var sb = new StringBuilder();

            if (isExpression)
            {
                sb.Append(", false)");
                context.SetExpressionRenderingMode(oldRenderingMode);
            }
            else
            {
                sb.Append("}), false)");
            }

            context.AddStatement(sb.ToString());
            context.TargetWriterName = oldTargetWriter;
        }
Пример #5
0
        public override void GenerateCode(Span target, CodeGeneratorContext context)
        {
            if (context.Host.DesignTimeMode)
            {
                return;
            }

            ExpressionRenderingMode oldMode = context.GetExpressionRenderingMode();

            var sb = new StringBuilder();

            sb.Append(", Tuple.Create<string,object,bool> (");
            sb.WriteCStyleStringLiteral(Prefix.Value);
            sb.Append(", ");

            if (ValueGenerator != null)
            {
                context.SetExpressionRenderingMode(ExpressionRenderingMode.InjectCode);
            }
            else
            {
                sb.WriteCStyleStringLiteral(Value);
                sb.Append(", true)");
            }
            context.BufferStatementFragment(sb.ToString());

            if (ValueGenerator != null)
            {
                ValueGenerator.Value.GenerateCode(target, context);
                context.FlushBufferedStatement();
                context.SetExpressionRenderingMode(oldMode);
                context.AddStatement(", false)");
            }
            else
            {
                context.FlushBufferedStatement();
            }
        }