Skip to content

Commit ec3194b

Browse files
committed
Update usages from Alpha17 to Alpha18 #1
1 parent e3e6e78 commit ec3194b

File tree

4 files changed

+61
-65
lines changed

4 files changed

+61
-65
lines changed

readme.md

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Json.Net Stubble Extensions [![Build status](https://img.shields.io/appveyor/ci/Romanx/stubble-extensions-jsonnet.svg?style=flat-square)](https://ci.appveyor.com/project/Romanx/stubble-extensions-jsonnet) [![Build Status](https://travis-ci.org/StubbleOrg/Stubble.Extensions.JsonNet.svg?branch=master)](https://travis-ci.org/StubbleOrg/Stubble.Extensions.JsonNet) [![Coverage Status](https://img.shields.io/coveralls/StubbleOrg/Stubble.Extensions.JsonNet.svg?style=flat-square)](https://coveralls.io/r/StubbleOrg/Stubble.Extensions.JsonNet) [![Prerelease Nuget](https://img.shields.io/nuget/vpre/Stubble.Extensions.JsonNet.svg?style=flat-square&label=nuget%20pre)](https://www.nuget.org/packages/Stubble.Extensions.JsonNet/) [![Stable Nuget](https://img.shields.io/nuget/v/Stubble.Extensions.JsonNet.svg?style=flat-square)](https://www.nuget.org/packages/Stubble.Extensions.JsonNet/)
1+
# Json.Net Stubble Extensions [![Build status](https://img.shields.io/appveyor/ci/Romanx/stubble-extensions-jsonnet.svg?style=flat-square)](https://ci.appveyor.com/project/Romanx/stubble-extensions-jsonnet) [![Build Status](https://travis-ci.org/StubbleOrg/Stubble.Extensions.JsonNet.svg?branch=master)](https://travis-ci.org/StubbleOrg/Stubble.Extensions.JsonNet) [![codecov](https://codecov.io/gh/StubbleOrg/Stubble.Extensions.JsonNet/branch/master/graph/badge.svg)](https://codecov.io/gh/StubbleOrg/Stubble.Extensions.JsonNet) [![Prerelease Nuget](https://img.shields.io/nuget/vpre/Stubble.Extensions.JsonNet.svg?style=flat-square&label=nuget%20pre)](https://www.nuget.org/packages/Stubble.Extensions.JsonNet/) [![Stable Nuget](https://img.shields.io/nuget/v/Stubble.Extensions.JsonNet.svg?style=flat-square)](https://www.nuget.org/packages/Stubble.Extensions.JsonNet/)
22

33
<img align="right" width="160px" height="160px" src="https://raw.githubusercontent.com/StubbleOrg/Stubble/dev/assets/extension-logo-256.png">
44

@@ -9,12 +9,16 @@ or preferably including it from Nuget.org through the badge above.
99

1010
Example Usage:
1111
```csharp
12-
var builder = new StubbleBuilder().AddJsonNet().Build();
12+
var builder = new StubbleBuilder().Configure(settings => settings.AddJsonNet()).Build();
1313
```
1414

1515
It's as simple as that, the package contains an Extension method for the StubbleBuilder adding
1616
in the ValueGetters required to handle JTokens.
1717

18+
## Compilation
19+
Currently this does not contain ValueGetters that work with compilation.
20+
If there is a demand for this however we will consider adding another package or add the dependency to this package.
21+
1822
## Credits
1923

2024
Straight Razor by Vectors Market from the Noun Project

src/Stubble.Extensions.JsonNet/JsonNet.cs

+7-16
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Text;
5-
using System.Threading.Tasks;
63
using Newtonsoft.Json.Linq;
7-
using Stubble.Core.Interfaces;
84
using Stubble.Core.Settings;
95

106
namespace Stubble.Extensions.JsonNet
117
{
128
public static class JsonNet
139
{
14-
public static IRendererSettingsBuilder<IStubbleBuilder<T>> AddJsonNet<T>(this IRendererSettingsBuilder<IStubbleBuilder<T>> builder)
10+
public static RendererSettingsBuilder AddJsonNet(this RendererSettingsBuilder builder)
1511
{
1612
foreach(var getter in ValueGetters)
1713
{
@@ -21,20 +17,15 @@ public static IRendererSettingsBuilder<IStubbleBuilder<T>> AddJsonNet<T>(this IR
2117
return builder;
2218
}
2319

24-
public static IStubbleBuilder<T> AddJsonNet<T>(this IStubbleBuilder<T> builder)
25-
{
26-
var settingsBuilder = builder as IRendererSettingsBuilder<IStubbleBuilder<T>>;
27-
settingsBuilder.AddJsonNet();
28-
return builder;
29-
}
30-
31-
internal static readonly Dictionary<Type, Func<object, string, object>> ValueGetters = new Dictionary<Type, Func<object, string, object>>
20+
internal static readonly Dictionary<Type, RendererSettingsDefaults.ValueGetterDelegate> ValueGetters = new Dictionary<Type, RendererSettingsDefaults.ValueGetterDelegate>
3221
{
3322
{
34-
typeof (JObject), (value, key) =>
23+
typeof (JObject), (value, key, ignoreCase) =>
3524
{
3625
var token = (JObject)value;
37-
var childToken = token[key];
26+
var comparison =
27+
ignoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal;
28+
var childToken = token.GetValue(key, comparison);
3829

3930
if (childToken == null) return null;
4031

@@ -48,7 +39,7 @@ public static IStubbleBuilder<T> AddJsonNet<T>(this IStubbleBuilder<T> builder)
4839

4940
var jValue = childToken as JValue;
5041

51-
return jValue != null ? jValue.Value : null;
42+
return jValue?.Value;
5243
}
5344
},
5445
};
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

3-
<PropertyGroup>
4-
<Copyright>Copyright � 2015</Copyright>
5-
<Authors>Alex McAuliffe</Authors>
6-
<TargetFrameworks>net45;netstandard1.3</TargetFrameworks>
7-
<AssemblyName>Stubble.Extensions.JsonNet</AssemblyName>
8-
<PackageId>Stubble.Extensions.JsonNet</PackageId>
9-
<PackageTags>template;mustache;text;generation;fast;newtonsoft;json.net;extension</PackageTags>
10-
<PackageLicenseUrl>https://github.com/StubbleOrg/Stubble.Extensions.JsonNet/blob/master/licence.md</PackageLicenseUrl>
11-
<RepositoryType>git</RepositoryType>
12-
<RepositoryUrl>https://github.com/StubbleOrg/Stubble.Extensions.JsonNet</RepositoryUrl>
13-
<PackageIconUrl>https://raw.githubusercontent.com/StubbleOrg/Stubble/dev/assets/extension-logo-64.png</PackageIconUrl>
14-
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
15-
<GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
16-
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
17-
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
18-
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
19-
<GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
20-
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
21-
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
22-
<GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
3+
<PropertyGroup>
4+
<Copyright>Copyright � 2015</Copyright>
5+
<Authors>Alex McAuliffe</Authors>
6+
<TargetFrameworks>net45;netstandard1.3</TargetFrameworks>
7+
<AssemblyName>Stubble.Extensions.JsonNet</AssemblyName>
8+
<PackageId>Stubble.Extensions.JsonNet</PackageId>
9+
<PackageTags>template;mustache;text;generation;fast;newtonsoft;json.net;extension</PackageTags>
10+
<PackageLicenseUrl>https://github.com/StubbleOrg/Stubble.Extensions.JsonNet/blob/master/licence.md</PackageLicenseUrl>
11+
<RepositoryType>git</RepositoryType>
12+
<RepositoryUrl>https://github.com/StubbleOrg/Stubble.Extensions.JsonNet</RepositoryUrl>
13+
<PackageIconUrl>https://raw.githubusercontent.com/StubbleOrg/Stubble/dev/assets/extension-logo-64.png</PackageIconUrl>
14+
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
15+
<GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
16+
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
17+
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
18+
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
19+
<GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
20+
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
21+
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
22+
<GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
2323
</PropertyGroup>
2424

25-
<ItemGroup>
26-
<PackageReference Include="Stubble.Core" Version="1.0.27-alpha16" />
27-
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
28-
<PackageReference Include="Nerdbank.GitVersioning" Version="1.6.30" PrivateAssets="All" />
25+
<ItemGroup>
26+
<PackageReference Include="Stubble.Core" Version="1.0.101-alpha18" />
27+
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
28+
<PackageReference Include="Nerdbank.GitVersioning" Version="2.1.23" PrivateAssets="All" />
2929
</ItemGroup>
3030

31-
<ItemGroup Condition=" '$(TargetFramework)' == 'net45' ">
32-
<Reference Include="System" />
33-
<Reference Include="Microsoft.CSharp" />
31+
<ItemGroup Condition=" '$(TargetFramework)' == 'net45' ">
32+
<Reference Include="System" />
33+
<Reference Include="Microsoft.CSharp" />
3434
</ItemGroup>
3535

3636
</Project>

test/Stubble.Extensions.JsonNet.Tests/JsonNetExtensionTest.cs

+21-20
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ public void It_Can_Get_Values_From_JTokens()
1414
const string json = "{ foo: \"bar\" }";
1515

1616
var stubble = new StubbleBuilder()
17-
.AddJsonNet()
18-
.Build();
17+
.Configure(settings => settings.AddJsonNet())
18+
.Build();
1919

2020
var obj = JsonConvert.DeserializeObject(json);
2121

@@ -29,8 +29,8 @@ public void It_Doesnt_Throw_When_No_Value_Exists()
2929
const string json = "{ foo: \"bar\" }";
3030

3131
var stubble = new StubbleBuilder()
32-
.AddJsonNet()
33-
.Build();
32+
.Configure(settings => settings.AddJsonNet())
33+
.Build();
3434

3535
var obj = JsonConvert.DeserializeObject(json);
3636

@@ -44,8 +44,8 @@ public void It_Handles_Arrays_Correctly()
4444
const string json = "{ foo: [ { bar: \"foobar\" } ] }";
4545

4646
var stubble = new StubbleBuilder()
47-
.AddJsonNet()
48-
.Build();
47+
.Configure(settings => settings.AddJsonNet())
48+
.Build();
4949

5050
var obj = JsonConvert.DeserializeObject(json);
5151

@@ -60,8 +60,8 @@ public void It_Handles_Nested_Objects()
6060
const string json = "{ foo: { bar: \"foobar\" } }";
6161

6262
var stubble = new StubbleBuilder()
63-
.AddJsonNet()
64-
.Build();
63+
.Configure(settings => settings.AddJsonNet())
64+
.Build();
6565

6666
var obj = JsonConvert.DeserializeObject(json);
6767

@@ -71,16 +71,17 @@ public void It_Handles_Nested_Objects()
7171
}
7272

7373
[Theory]
74-
[InlineData("{ foo: 1 }", (long)1)] //Ints are always longs in Json.Net
75-
[InlineData("{ foo: \"2\" }", "2")]
76-
[InlineData("{ foo: 1.01 }", 1.01)]
77-
[InlineData("{ foo: null }", null)]
78-
[InlineData("{ foo: true }", true)]
79-
public void Tokens_Return_Correct_DotNet_Type(string json, object expected)
74+
[InlineData("{ foo: 1 }", 1L, false)] //Ints are always longs in Json.Net
75+
[InlineData("{ foo: \"2\" }", "2", false)]
76+
[InlineData("{ foo: 1.01 }", 1.01, false)]
77+
[InlineData("{ foo: null }", null, false)]
78+
[InlineData("{ foo: true }", true, false)]
79+
[InlineData("{ Foo: 1 }", 1L, true)]
80+
public void Tokens_Return_Correct_DotNet_Type(string json, object expected, bool ignoreCase)
8081
{
8182
var obj = JsonConvert.DeserializeObject(json);
8283

83-
var value = JsonNet.ValueGetters[typeof(JObject)](obj, "foo");
84+
var value = JsonNet.ValueGetters[typeof(JObject)](obj, "foo", ignoreCase);
8485
Assert.Equal(expected, value);
8586
}
8687

@@ -89,7 +90,7 @@ public void It_Handles_DateTimes_Correctly()
8990
{
9091
var obj = JsonConvert.DeserializeObject("{ foo: \"2009-02-15T00:00:00Z\" }");
9192

92-
var value = JsonNet.ValueGetters[typeof(JObject)](obj, "foo");
93+
var value = JsonNet.ValueGetters[typeof(JObject)](obj, "foo", false);
9394
Assert.Equal(DateTime.Parse("2009-02-15T00:00:00Z").ToUniversalTime(), value);
9495
}
9596

@@ -99,8 +100,8 @@ public void Truthy_Checks_Work_Correctly()
99100
const string json = "{ showme: false, foo: { bar: \"foobar\" } }";
100101

101102
var stubble = new StubbleBuilder()
102-
.AddJsonNet()
103-
.Build();
103+
.Configure(settings => settings.AddJsonNet())
104+
.Build();
104105

105106
var obj = JsonConvert.DeserializeObject(json);
106107

@@ -115,8 +116,8 @@ public void Truthy_Checks_Work_For_Inverted()
115116
const string json = "{ showme: false, foo: { bar: \"foobar\" } }";
116117

117118
var stubble = new StubbleBuilder()
118-
.AddJsonNet()
119-
.Build();
119+
.Configure(settings => settings.AddJsonNet())
120+
.Build();
120121

121122
var obj = JsonConvert.DeserializeObject(json);
122123

0 commit comments

Comments
 (0)