protected override void Visit([NotNull] InjectChunk chunk)
        {
            Writer.WriteLine(_activateAttribute);

            // Some of the chunks that we visit are either InjectDescriptors that are added by default or
            // are chunks from _ViewStart files and are not associated with any Spans. Invoking
            // CreateExpressionMapping to produce line mappings on these chunks would fail. We'll skip
            // generating code mappings for these chunks. This makes sense since the chunks do not map
            // to any code in the current view.
            if (Context.Host.DesignTimeMode && chunk.Association != null)
            {
                Writer.WriteLine("public");

                var code = string.IsNullOrEmpty(chunk.MemberName) ?
                            chunk.TypeName :
                            chunk.TypeName + " " + chunk.MemberName;
                var csharpVisitor = new CSharpCodeVisitor(Writer, Context);
                csharpVisitor.CreateExpressionCodeMapping(code, chunk);
                Writer.WriteLine("{ get; private set; }");
            }
            else
            {
                Writer.Write("public ")
                      .Write(chunk.TypeName)
                      .Write(" ")
                      .Write(chunk.MemberName)
                      .WriteLine(" { get; private set; }");
            }

            InjectChunks.Add(chunk);
        }
Beispiel #2
0
 public RazorLightCSharpDesignTimeCodeVisitor(
     CSharpCodeVisitor csharpCodeVisitor,
     CSharpCodeWriter writer,
     CodeGeneratorContext context)
     : base(csharpCodeVisitor, writer, context)
 {
 }
Beispiel #3
0
        protected override void Visit([NotNull] InjectChunk chunk)
        {
            Writer.WriteLine(_activateAttribute);

            // Some of the chunks that we visit are either InjectDescriptors that are added by default or
            // are chunks from _ViewStart files and are not associated with any Spans. Invoking
            // CreateExpressionMapping to produce line mappings on these chunks would fail. We'll skip
            // generating code mappings for these chunks. This makes sense since the chunks do not map
            // to any code in the current view.
            if (Context.Host.DesignTimeMode && chunk.Association != null)
            {
                Writer.WriteLine("public");

                var code = string.IsNullOrEmpty(chunk.MemberName) ?
                           chunk.TypeName :
                           chunk.TypeName + ' ' + chunk.MemberName;
                var csharpVisitor = new CSharpCodeVisitor(Writer, Context);
                csharpVisitor.CreateExpressionCodeMapping(code, chunk);
                Writer.WriteLine("{ get; private set; }");
            }
            else
            {
                Writer.Write("public ")
                .Write(chunk.TypeName)
                .Write(" ")
                .Write(chunk.MemberName)
                .WriteLine(" { get; private set; }");
            }
            _injectChunks.Add(chunk);
        }
 public MvcCSharpDesignTimeCodeVisitor(
     CSharpCodeVisitor csharpCodeVisitor,
     CSharpCodeWriter writer,
     CodeGeneratorContext context)
     : base(csharpCodeVisitor, writer, context)
 {
 }
Beispiel #5
0
        protected override void Visit(ModelChunk chunk)
        {
            var csharpVisitor = new CSharpCodeVisitor(Writer, Context);

            Writer.Write(chunk.BaseType).Write("<");
            csharpVisitor.CreateExpressionCodeMapping(chunk.ModelType, chunk);
            Writer.Write(">");
        }
        private static TrackingUniqueIdsTagHelperCodeRenderer CreateCodeRenderer()
        {
            var writer = new CSharpCodeWriter();
            var codeGeneratorContext = CreateContext();
            var visitor      = new CSharpCodeVisitor(writer, codeGeneratorContext);
            var codeRenderer = new TrackingUniqueIdsTagHelperCodeRenderer(
                visitor,
                writer,
                codeGeneratorContext);

            visitor.TagHelperRenderer = codeRenderer;
            return(codeRenderer);
        }
        protected Result <string> GetEmiterText(string source,
                                                Func <SdmapParser, IParseTree> partAccessor,
                                                CodeEmiterConfig config = null)
        {
            var ais    = new AntlrInputStream(source);
            var lexer  = new SdmapLexer(ais);
            var cts    = new CommonTokenStream(lexer);
            var parser = new SdmapParser(cts);

            using (var ms = new MemoryStream())
                using (var writer = new StreamWriter(ms))
                {
                    config = config ?? new CodeEmiterConfig();
                    var visitor = new CSharpCodeVisitor(writer, config, new CSharpDefine());
                    return(visitor.Visit(partAccessor(parser))
                           .OnSuccess(() => writer.Flush())
                           .OnSuccess(() => ms.ToArray())
                           .OnSuccess(Encoding.UTF8.GetString));
                }
        }
Beispiel #8
0
        protected override CSharpDesignTimeCodeVisitor CreateCSharpDesignTimeCodeVisitor(
            CSharpCodeVisitor csharpCodeVisitor,
            CSharpCodeWriter writer,
            CodeGeneratorContext context)
        {
            if (csharpCodeVisitor == null)
            {
                throw new ArgumentNullException(nameof(csharpCodeVisitor));
            }

            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            return(new MvcCSharpDesignTimeCodeVisitor(csharpCodeVisitor, writer, context));
        }
 private static TrackingUniqueIdsTagHelperCodeRenderer CreateCodeRenderer()
 {
     var writer = new CSharpCodeWriter();
     var codeGeneratorContext = CreateContext();
     var visitor = new CSharpCodeVisitor(writer, codeGeneratorContext);
     var codeRenderer = new TrackingUniqueIdsTagHelperCodeRenderer(
         visitor,
         writer,
         codeGeneratorContext);
     visitor.TagHelperRenderer = codeRenderer;
     return codeRenderer;
 }
        protected override CSharpDesignTimeCodeVisitor CreateCSharpDesignTimeCodeVisitor(
            CSharpCodeVisitor csharpCodeVisitor,
            CSharpCodeWriter writer,
            CodeGeneratorContext context)
        {
            if (csharpCodeVisitor == null)
            {
                throw new ArgumentNullException(nameof(csharpCodeVisitor));
            }

            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            return new MvcCSharpDesignTimeCodeVisitor(csharpCodeVisitor, writer, context);
        }