Browse Source

Refactor T4 templating host.

pull/23/head
Matt Ward 15 years ago
parent
commit
2b2e71632e
  1. 4
      src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomTool.cs
  2. 25
      src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs
  3. 57
      src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHostContext.cs
  4. 1
      src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj
  5. 10
      src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingHost.cs

4
src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomTool.cs

@ -18,8 +18,8 @@ namespace ICSharpCode.TextTemplating @@ -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()

25
src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs

@ -8,24 +8,13 @@ namespace ICSharpCode.TextTemplating @@ -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 @@ -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 @@ -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);
}
}
}

57
src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHostContext.cs

@ -0,0 +1,57 @@ @@ -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);
}
}
}

1
src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj

@ -81,6 +81,7 @@ @@ -81,6 +81,7 @@
<Compile Include="Src\TextTemplatingFilePreprocessorCustomTool.cs" />
<Compile Include="Src\TextTemplatingFileProcessor.cs" />
<Compile Include="Src\TextTemplatingHost.cs" />
<Compile Include="Src\TextTemplatingHostContext.cs" />
<Compile Include="Src\TextTemplatingPathResolver.cs" />
<Compile Include="Src\TextTemplatingReflectionProjectContent.cs" />
<Compile Include="Src\TextTemplatingServiceProvider.cs" />

10
src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingHost.cs

@ -12,6 +12,7 @@ namespace TextTemplating.Tests.Helpers @@ -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 @@ -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)
{

Loading…
Cancel
Save