Example #1
0
        public void Generate(IBuildContext context, ITextTemplatingEngine textTemplatingEngine, IProjectBase project)
        {
            var extension   = '.' + context.Configuration.GetString(Constants.Configuration.GenerateCode.Extension, ".*").TrimStart('.');
            var pathMatcher = Factory.PathMatcher(context.Configuration.GetString(Constants.Configuration.GenerateCode.Include), context.Configuration.GetString(Constants.Configuration.GenerateCode.Exclude));

            foreach (var fileName in FileSystem.GetFiles(context.ProjectDirectory, "*" + extension, SearchOption.AllDirectories))
            {
                if (!pathMatcher.IsMatch(fileName))
                {
                    continue;
                }

                context.Trace.TraceInformation(Msg.G1008, Texts.Generating_code, PathHelper.UnmapPath(context.ProjectDirectory, fileName));

                try
                {
                    var targetFileName = fileName.Left(fileName.Length - extension.Length);
                    var template       = FileSystem.ReadAllText(fileName);

                    var output = textTemplatingEngine.Generate(template, project);

                    if (string.IsNullOrEmpty(output))
                    {
                        FileSystem.DeleteFile(targetFileName);
                        continue;
                    }

                    if (output.IndexOf("<pagebreak", StringComparison.Ordinal) < 0)
                    {
                        FileSystem.WriteAllText(targetFileName, output);
                        continue;
                    }

                    SplitOutputIntoFiles(output, fileName);
                }
                catch (TemplateParsingException ex)
                {
                    foreach (var parserError in ex.ParserErrors)
                    {
                        context.Trace.TraceError(Msg.G1007, parserError.Message, fileName, new TextSpan(parserError.Location.LineIndex, parserError.Location.CharacterIndex, parserError.Length));
                    }
                }
                catch (TemplateCompilationException ex)
                {
                    foreach (var compilationError in ex.CompilationErrors)
                    {
                        context.Trace.TraceError(Msg.G1007, compilationError, fileName, TextSpan.Empty);
                    }
                }
                catch (Exception ex)
                {
                    context.Trace.TraceError(Msg.G1007, ex.Message, fileName, TextSpan.Empty);
                }
            }
        }
Example #2
0
        internal TextTemplatingService(OrchestratorPackage package)
        {
            DTE dTE = package.GetDTE();

            this.package         = package;
            this.engine          = new Microsoft.VisualStudio.TextTemplating.Engine();
            this.serviceProvider = new ServiceProvider(dTE as Microsoft.VisualStudio.OLE.Interop.IServiceProvider);
            this.errorProvider   = new ErrorListProvider(this.serviceProvider);
            this.errorProvider.MaintainInitialTaskOrder = true;
            dTE.Events.SolutionEvents.add_AfterClosing(new _dispSolutionEvents_AfterClosingEventHandler(this.SolutionEvents_AfterClosing));
        }
Example #3
0
        private static string GetOutputExtension(DynamicTextTemplatingEngineHost host, ITextTemplatingEngine t4Engine, string templateContent)
        {
            string ignoredLanguage;

            string[] ignoreReferences;
            t4Engine.PreprocessTemplate(templateContent, host, "DummyClass", "DummyNamespace", out ignoredLanguage, out ignoreReferences);
            return(host.FileExtension ?? string.Empty);
        }
 private static string GetOutputExtension(DynamicTextTemplatingEngineHost host, ITextTemplatingEngine t4Engine, string templateContent)
 {
     string ignoredLanguage;
     string[] ignoreReferences;
     t4Engine.PreprocessTemplate(templateContent, host, "DummyClass", "DummyNamespace", out ignoredLanguage, out ignoreReferences);
     return host.FileExtension ?? string.Empty;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DomainTextTransformer"/> class.
 /// </summary>
 /// <param name="appDomainManager">The app domain manager.</param>
 /// <param name="host">The host.</param>
 /// <param name="engine">The engine.</param>
 internal DomainTextTransformer(IAppDomainManager appDomainManager, ITextTransformerHost host, ITextTemplatingEngine engine)
     : base(host, engine)
 {
     _appDomainManager = appDomainManager;
     Initialize();
 }
 public TextTransformerImplementation(ITextTransformerHost host, ITextTemplatingEngine engine) : base(host, engine)
 {
 }
Example #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TextTransformerBase"/> class.
 /// </summary>
 protected internal TextTransformerBase()
 {
     _host = ServiceLocator.Resolve<ITextTransformerHost, ITextTransformer>(this);
     _host.ClassDefinitionGenerated += HostClassDefinitionGeneratedHandler;
     _engine = new Engine();
 }
Example #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TextTransformerBase"/> class.
 /// </summary>
 internal TextTransformerBase(ITextTransformerHost host, ITextTemplatingEngine engine)
 {
     _host = host;
     _host.ClassDefinitionGenerated += HostClassDefinitionGeneratedHandler;
     _engine = engine;
 }
Example #9
0
 public GenerateCode([NotNull] IFileSystem fileSystem, [NotNull] ITextTemplatingEngine textTemplatingEngine, [NotNull, ImportMany, ItemNotNull] IEnumerable <ICodeGenerator> codeGenerators) : base("generate-code")
 {
     FileSystem           = fileSystem;
     TextTemplatingEngine = textTemplatingEngine;
     CodeGenerators       = codeGenerators;
 }
Example #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DomainTextTransformer"/> class.
 /// </summary>
 /// <param name="appDomainManager">The app domain manager.</param>
 /// <param name="host">The host.</param>
 /// <param name="engine">The engine.</param>
 internal DomainTextTransformer(IAppDomainManager appDomainManager, ITextTransformerHost host, ITextTemplatingEngine engine) : base(host, engine)
 {
     _appDomainManager = appDomainManager;
     Initialize();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="TextTransformerBase"/> class.
 /// </summary>
 internal TextTransformerBase(ITextTransformerHost host, ITextTemplatingEngine engine)
 {
     _host = host;
     _host.ClassDefinitionGenerated += HostClassDefinitionGeneratedHandler;
     _engine = engine;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="TextTransformerBase"/> class.
 /// </summary>
 protected internal TextTransformerBase()
 {
     _host = ServiceLocator.Resolve <ITextTransformerHost, ITextTransformer>(this);
     _host.ClassDefinitionGenerated += HostClassDefinitionGeneratedHandler;
     _engine = new Engine();
 }