Skip to content

Commit 40062b3

Browse files
committed
issue #73 refactor, remove redundant classes.
1 parent cd1a7a0 commit 40062b3

10 files changed

Lines changed: 68 additions & 79 deletions

File tree

‎src/Incoding.UnitTest/MvcContribGroup/Extensions/When_html_extensions.cs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ public class When_html_extensions
3434
var pathToView = Pleasure.Generator.String();
3535
var data = Pleasure.Generator.Invent<KeyValueVm[]>();
3636
var model = Pleasure.Generator.String();
37-
IoCFactory.Instance.StubTryResolve(Pleasure.MockStrictAsObject<ITemplateOnServerSide>(mock => mock.Setup(s => s.Render(Pleasure.MockIt.IsNull<HtmlHelper>(), pathToView, data, model)).Returns(Pleasure.Generator.TheSameString())));
37+
IoCFactory.Instance.StubTryResolve(Pleasure.MockStrictAsObject<ITemplateFactory>(mock => mock.Setup(s => s.Render(Pleasure.MockIt.IsNull<HtmlHelper>(), pathToView, data, model)).Returns(Pleasure.Generator.TheSameString())));
3838
data.AsView(pathToView, model).ToHtmlString().ShouldBeTheSameString();
3939
};
4040

4141
It should_be_as_view_without_model = () =>
4242
{
4343
var pathToView = Pleasure.Generator.String();
4444
var data = Pleasure.Generator.Invent<KeyValueVm[]>();
45-
IoCFactory.Instance.StubTryResolve(Pleasure.MockStrictAsObject<ITemplateOnServerSide>(mock => mock.Setup(s => s.Render(Pleasure.MockIt.IsNull<HtmlHelper>(), pathToView, data, null)).Returns(Pleasure.Generator.TheSameString())));
45+
IoCFactory.Instance.StubTryResolve(Pleasure.MockStrictAsObject<ITemplateFactory>(mock => mock.Setup(s => s.Render(Pleasure.MockIt.IsNull<HtmlHelper>(), pathToView, data, null)).Returns(Pleasure.Generator.TheSameString())));
4646
data.AsView(pathToView).ToHtmlString().ShouldBeTheSameString();
4747
};
4848

‎src/Incoding.UnitTest/MvcContribGroup/Template/Server Side/When_template_handlebars.cs‎

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
#endregion
2020

21-
[Subject(typeof(TemplateHandlebarsOnServerSide))]
21+
[Subject(typeof(TemplateHandlebarsFactory))]
2222
public class When_template_handlebars
2323
{
2424
private static RenderViewQuery query;
@@ -42,39 +42,39 @@ public class When_template_handlebars
4242

4343
It should_be_compile = () =>
4444
{
45-
new TemplateHandlebarsOnServerSide()
45+
new TemplateHandlebarsFactory()
4646
.Render(htmlHelper, query.PathToView, data, query.Model)
4747
.ShouldEqual(@"<option value=""1"" title="""">1</option><option value=""2"" title="""">2</option>");
4848
};
4949

5050
It should_be_compile_performance = () =>
5151
{
52-
Pleasure.Do(i => new TemplateHandlebarsOnServerSide()
52+
Pleasure.Do(i => new TemplateHandlebarsFactory()
5353
.Render(htmlHelper, query.PathToView, data, query.Model)
5454
.ShouldNotBeEmpty(), 1000).ShouldBeLessThan(100);
5555
};
5656

5757
It should_be_compile_wihtout_view_model = () =>
5858
{
5959
query.Model = null;
60-
var render = new TemplateHandlebarsOnServerSide()
60+
var render = new TemplateHandlebarsFactory()
6161
.Render(htmlHelper, query.PathToView, data);
6262
render.ShouldEqual(@"<option value=""1"" title="""">1</option><option value=""2"" title="""">2</option>");
6363
};
6464

6565
It should_be_compile_with_null_data = () =>
66-
{
67-
query.Model = null;
68-
object data = null;
69-
var render = new TemplateHandlebarsOnServerSide()
70-
.Render(htmlHelper, query.PathToView, data);
71-
render.ShouldEqual(@"");
72-
};
66+
{
67+
query.Model = null;
68+
object data = null;
69+
var render = new TemplateHandlebarsFactory()
70+
.Render(htmlHelper, query.PathToView, data);
71+
render.ShouldEqual(@"");
72+
};
7373

7474
It should_be_complexity = () =>
7575
{
7676
var tmpl = File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "handlebars_complexity_tmpl.txt"));
77-
var newQuery = Pleasure.Generator.Invent<RenderViewQuery>(dsl => dsl.Tuning(r => r.Model,null)
77+
var newQuery = Pleasure.Generator.Invent<RenderViewQuery>(dsl => dsl.Tuning(r => r.Model, null)
7878
.Tuning(r => r.HtmlHelper, htmlHelper));
7979
dispatcher.StubQuery(newQuery, new MvcHtmlString(tmpl));
8080
var data = new ComplexityVm()
@@ -83,7 +83,7 @@ public class When_template_handlebars
8383
{
8484
new ComplexityVm.TabVm() { After = "" }
8585
},
86-
GroupLinks = new List<ComplexityVm.TabVm>(),
86+
GroupLinks = new List<ComplexityVm.TabVm>(),
8787
CountTabs = new[]
8888
{
8989
new ComplexityVm.TabVm()
@@ -102,8 +102,7 @@ public class When_template_handlebars
102102
}
103103
}.ToList()
104104
};
105-
var render = new TemplateHandlebarsOnServerSide()
106-
.Render(htmlHelper, newQuery.PathToView, data, newQuery.Model);
105+
var render = new TemplateHandlebarsFactory().Render(htmlHelper, newQuery.PathToView, data, newQuery.Model);
107106
render.ShouldEqual(@"
108107
109108
<div class=""clearfix""></div>

‎src/Incoding/Incoding.csproj‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -505,8 +505,6 @@
505505
<Compile Include="MvcContrib\Primitive\HtmlInputType.cs" />
506506
<Compile Include="MvcContrib\Primitive\KeyCode.cs" />
507507
<Compile Include="MvcContrib\Template\Factory\ITemplateFactory.cs" />
508-
<Compile Include="MvcContrib\Template\Factory\ITemplateOnServerSide.cs" />
509-
<Compile Include="MvcContrib\Template\Factory\TemplateHandlerbarsOnServerSide.cs" />
510508
<Compile Include="MvcContrib\Template\Factory\TemplateDoTFactory.cs" />
511509
<Compile Include="MvcContrib\Template\Factory\TemplateHandlebarsFactory.cs" />
512510
<Compile Include="MvcContrib\Template\Factory\TemplateMustacheFactory.cs" />
@@ -677,7 +675,7 @@
677675
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
678676
<ProjectExtensions>
679677
<VisualStudio>
680-
<UserProperties BuildVersion_DetectChanges="True" BuildVersion_IncrementBeforeBuild="False" BuildVersion_BuildAction="Both" BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" />
678+
<UserProperties BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" BuildVersion_BuildAction="Both" BuildVersion_IncrementBeforeBuild="False" BuildVersion_DetectChanges="True" />
681679
</VisualStudio>
682680
</ProjectExtensions>
683681
<PropertyGroup>

‎src/Incoding/MvcContrib/Extensions/HtmlExtensions.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public static IDispatcher Dispatcher(this HtmlHelper htmlHelper)
3131

3232
public static MvcHtmlString AsView<TData>(this TData data, [PathReference] string view, object model = null) where TData :class
3333
{
34-
return MvcHtmlString.Create(IoCFactory.Instance.TryResolve<ITemplateOnServerSide>().Render(HtmlHelper, view, data, model));
34+
return MvcHtmlString.Create(IoCFactory.Instance.TryResolve<ITemplateFactory>().Render(HtmlHelper, view, data, model));
3535
}
3636

3737
public static IncodingHtmlHelperFor<TModel, TProperty> For<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> property)

‎src/Incoding/MvcContrib/Template/Factory/ITemplateFactory.cs‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
using System.Web.Mvc;
44

55
public interface ITemplateFactory
6-
{
6+
{
77
ITemplateSyntax<TModel> ForEach<TModel>(HtmlHelper htmlHelper);
88

99
ITemplateSyntax<TModel> NotEach<TModel>(HtmlHelper htmlHelper);
1010

1111
string GetDropDownTemplate();
12+
13+
string Render<T>(HtmlHelper htmlHelper, string pathToView, T data, object modelForView = null) where T : class;
1214
}
1315
}

‎src/Incoding/MvcContrib/Template/Factory/ITemplateOnServerSide.cs‎

Lines changed: 0 additions & 14 deletions
This file was deleted.

‎src/Incoding/MvcContrib/Template/Factory/TemplateDoTFactory.cs‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
namespace Incoding.MvcContrib
22
{
3+
#region << Using >>
4+
5+
using System;
36
using System.Web.Mvc;
47

8+
#endregion
9+
510
public class TemplateDoTFactory : ITemplateFactory
611
{
712
#region ITemplateFactory Members
@@ -33,6 +38,11 @@ public string GetDropDownTemplate()
3338
{{/data}}";
3439
}
3540

41+
public string Render<T>(HtmlHelper htmlHelper, string pathToView, T data, object modelForView = null) where T : class
42+
{
43+
throw new NotImplementedException();
44+
}
45+
3646
#endregion
3747
}
3848
}

‎src/Incoding/MvcContrib/Template/Factory/TemplateHandlebarsFactory.cs‎

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,24 @@
22
{
33
#region << Using >>
44

5+
using System;
6+
using System.Collections;
7+
using System.Collections.Concurrent;
58
using System.Web.Mvc;
9+
using FluentNHibernate.Utils;
10+
using HandlebarsDotNet;
11+
using Incoding.Block.IoC;
12+
using Incoding.CQRS;
13+
using Incoding.Extensions;
614

715
#endregion
816

917
public class TemplateHandlebarsFactory : ITemplateFactory
1018
{
19+
internal static readonly ConcurrentDictionary<string, Func<object, string>> cache = new ConcurrentDictionary<string, Func<object, string>>();
20+
21+
public static Func<string> GetVersion = () => { return string.Empty; };
22+
1123
#region ITemplateFactory Members
1224

1325
public ITemplateSyntax<TModel> ForEach<TModel>(HtmlHelper htmlHelper)
@@ -37,6 +49,25 @@ public string GetDropDownTemplate()
3749
{{/data}}";
3850
}
3951

52+
public string Render<T>(HtmlHelper htmlHelper, string pathToView, T data, object modelForView = null) where T : class
53+
{
54+
var fullPathToView = pathToView.AppendToQueryString(modelForView);
55+
object correctData = data;
56+
if (data != null && !data.GetType().HasInterface(typeof(IEnumerable)))
57+
correctData = new { data = data };
58+
59+
return cache.GetOrAdd(fullPathToView + GetVersion(), (i) =>
60+
{
61+
var tmpl = IoCFactory.Instance.TryResolve<IDispatcher>().Query(new RenderViewQuery()
62+
{
63+
HtmlHelper = htmlHelper,
64+
PathToView = pathToView,
65+
Model = modelForView
66+
}).ToHtmlString();
67+
return Handlebars.Compile(tmpl);
68+
})(new { data = correctData });
69+
}
70+
4071
#endregion
4172
}
4273
}

‎src/Incoding/MvcContrib/Template/Factory/TemplateHandlerbarsOnServerSide.cs‎

Lines changed: 0 additions & 43 deletions
This file was deleted.

‎src/Incoding/MvcContrib/Template/Factory/TemplateMustacheFactory.cs‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{
33
#region << Using >>
44

5+
using System;
56
using System.Web.Mvc;
67

78
#endregion
@@ -33,6 +34,11 @@ public string GetDropDownTemplate()
3334
{{/data}}";
3435
}
3536

37+
public string Render<T>(HtmlHelper htmlHelper, string pathToView, T data, object modelForView = null) where T : class
38+
{
39+
throw new NotImplementedException();
40+
}
41+
3642
#endregion
3743
}
3844
}

0 commit comments

Comments
 (0)