diff --git a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomTool.cs b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomTool.cs index 9bb20b3825..7bcc663a88 100644 --- a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomTool.cs +++ b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomTool.cs @@ -18,8 +18,8 @@ namespace ICSharpCode.TextTemplating var assemblyResolver = new TextTemplatingAssemblyResolver(project); var textTemplatingVariables = new TextTemplatingVariables(); var serviceProvider = new TextTemplatingServiceProvider(); - var host = new TextTemplatingHost(appDomainFactory, assemblyResolver, textTemplatingVariables, serviceProvider, applicationBase); - return host; + var context = new TextTemplatingHostContext(project); + return new TextTemplatingHost(context, applicationBase); } string GetAssemblyBaseLocation() diff --git a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs index 71dbb59852..7f40edde99 100644 --- a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs +++ b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs @@ -8,24 +8,13 @@ namespace ICSharpCode.TextTemplating { public class TextTemplatingHost : TemplateGenerator, ITextTemplatingHost, IServiceProvider { - ITextTemplatingAppDomainFactory appDomainFactory; ITextTemplatingAppDomain templatingAppDomain; - ITextTemplatingAssemblyResolver assemblyResolver; - ITextTemplatingVariables templatingVariables; - IServiceProvider serviceProvider; + TextTemplatingHostContext context; string applicationBase; - public TextTemplatingHost( - ITextTemplatingAppDomainFactory appDomainFactory, - ITextTemplatingAssemblyResolver assemblyResolver, - ITextTemplatingVariables templatingVariables, - IServiceProvider serviceProvider, - string applicationBase) + public TextTemplatingHost(TextTemplatingHostContext context, string applicationBase) { - this.appDomainFactory = appDomainFactory; - this.assemblyResolver = assemblyResolver; - this.templatingVariables = templatingVariables; - this.serviceProvider = serviceProvider; + this.context = context; this.applicationBase = applicationBase; } @@ -47,12 +36,12 @@ namespace ICSharpCode.TextTemplating void CreateAppDomain() { - templatingAppDomain = appDomainFactory.CreateTextTemplatingAppDomain(applicationBase); + templatingAppDomain = context.CreateTextTemplatingAppDomain(applicationBase); } protected override string ResolveAssemblyReference(string assemblyReference) { - return assemblyResolver.Resolve(assemblyReference); + return context.ResolveAssemblyReference(assemblyReference); } protected override string ResolvePath(string path) @@ -63,12 +52,12 @@ namespace ICSharpCode.TextTemplating string ExpandPath(string path) { - return templatingVariables.ExpandVariables(path); + return context.ExpandTemplateVariables(path); } object IServiceProvider.GetService(Type serviceType) { - return serviceProvider.GetService(serviceType); + return context.GetService(serviceType); } } } diff --git a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHostContext.cs b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHostContext.cs new file mode 100644 index 0000000000..eb1b5fd849 --- /dev/null +++ b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHostContext.cs @@ -0,0 +1,57 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using ICSharpCode.SharpDevelop.Project; + +namespace ICSharpCode.TextTemplating +{ + public class TextTemplatingHostContext + { + ITextTemplatingAppDomainFactory appDomainFactory; + ITextTemplatingAssemblyResolver assemblyResolver; + ITextTemplatingVariables templatingVariables; + IServiceProvider serviceProvider; + + public TextTemplatingHostContext(IProject project) + : this( + new TextTemplatingAppDomainFactory(), + new TextTemplatingAssemblyResolver(project), + new TextTemplatingVariables(), + new TextTemplatingServiceProvider()) + { + } + + public TextTemplatingHostContext( + ITextTemplatingAppDomainFactory appDomainFactory, + ITextTemplatingAssemblyResolver assemblyResolver, + ITextTemplatingVariables templatingVariables, + IServiceProvider serviceProvider) + { + this.appDomainFactory = appDomainFactory; + this.assemblyResolver = assemblyResolver; + this.templatingVariables = templatingVariables; + this.serviceProvider = serviceProvider; + } + + public object GetService(Type serviceType) + { + return serviceProvider.GetService(serviceType); + } + + public string ExpandTemplateVariables(string name) + { + return templatingVariables.ExpandVariables(name); + } + + public ITextTemplatingAppDomain CreateTextTemplatingAppDomain(string applicationBase) + { + return appDomainFactory.CreateTextTemplatingAppDomain(applicationBase); + } + + public string ResolveAssemblyReference(string assemblyReference) + { + return assemblyResolver.Resolve(assemblyReference); + } + } +} diff --git a/src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj b/src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj index 02116dbbdf..4bca22cf27 100644 --- a/src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj +++ b/src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj @@ -81,6 +81,7 @@ + diff --git a/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingHost.cs b/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingHost.cs index 8e22d5d10a..bf4cd0ada0 100644 --- a/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingHost.cs +++ b/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingHost.cs @@ -12,6 +12,7 @@ namespace TextTemplating.Tests.Helpers public FakeTextTemplatingAssemblyResolver FakeTextTemplatingAssemblyResolver; public FakeTextTemplatingVariables FakeTextTemplatingVariables; public FakeServiceProvider FakeServiceProvider; + public TextTemplatingHostContext HostContext; public TestableTextTemplatingHost(string applicationBase) : this( @@ -29,13 +30,20 @@ namespace TextTemplating.Tests.Helpers FakeTextTemplatingVariables textTemplatingVariables, FakeServiceProvider fakeServiceProvider, string applicationBase) - : base(appDomainFactory, assemblyResolver, textTemplatingVariables, fakeServiceProvider, applicationBase) + : this( + new TextTemplatingHostContext(appDomainFactory, assemblyResolver, textTemplatingVariables, fakeServiceProvider), + applicationBase) { FakeTextTemplatingAppDomainFactory = appDomainFactory; FakeTextTemplatingAssemblyResolver = assemblyResolver; FakeTextTemplatingVariables = textTemplatingVariables; FakeServiceProvider = fakeServiceProvider; } + + public TestableTextTemplatingHost(TextTemplatingHostContext context, string applicationBase) + : base(context, applicationBase) + { + } public string CallResolveAssemblyReference(string assemblyReference) {