Skip to content

Commit

Permalink
Merge pull request #918 from RSuter/master
Browse files Browse the repository at this point in the history
Release v9.13.21
  • Loading branch information
RicoSuter committed Mar 2, 2019
2 parents 0661237 + 3db99cf commit 2ef102e
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFrameworks>netstandard1.3;netstandard2.0;net451</TargetFrameworks>
<Description>JSON Schema reader, generator and validator for .NET</Description>
<Version>9.13.20</Version>
<Version>9.13.21</Version>
<PackageTags>json schema validation generator .net</PackageTags>
<Copyright>Copyright © Rico Suter, 2018</Copyright>
<PackageLicenseUrl>https://github.com/rsuter/NJsonSchema/blob/master/LICENSE.md</PackageLicenseUrl>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFrameworks>netstandard1.3;netstandard2.0;net451</TargetFrameworks>
<Description>JSON Schema reader, generator and validator for .NET</Description>
<Version>9.13.20</Version>
<Version>9.13.21</Version>
<PackageTags>json schema validation generator .net</PackageTags>
<Copyright>Copyright © Rico Suter, 2018</Copyright>
<PackageLicenseUrl>https://github.com/rsuter/NJsonSchema/blob/master/LICENSE.md</PackageLicenseUrl>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace NJsonSchema.CodeGeneration.TypeScript
/// <summary>Converts the default value to a TypeScript identifier.</summary>
public class TypeScriptValueGenerator : ValueGeneratorBase
{
private readonly List<string> _formatCompatibleWithString = new List<string>()
private readonly List<string> _supportedFormatStrings = new List<string>()
{
JsonFormatStrings.Uri,
JsonFormatStrings.Guid,
Expand Down Expand Up @@ -42,9 +42,9 @@ public override string GetDefaultValue(JsonSchema4 schema, bool allowsNull, stri
var value = base.GetDefaultValue(schema, allowsNull, targetType, typeNameHint, useSchemaDefault, typeResolver);
if (value == null)
{
if (schema.Type.HasFlag(JsonObjectType.String) && _formatCompatibleWithString.Contains(schema.Format))
if (schema.Type.HasFlag(JsonObjectType.String) && _supportedFormatStrings.Contains(schema.Format))
{
return "\"" + ConversionUtilities.ConvertToStringLiteral(value.ToString()) + "\"";
return GetDefaultAsStringLiteral(schema);
}

var isOptional = (schema as JsonProperty)?.IsRequired == false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFrameworks>netstandard1.3;netstandard2.0;net451</TargetFrameworks>
<Description>JSON Schema reader, generator and validator for .NET</Description>
<Version>9.13.20</Version>
<Version>9.13.21</Version>
<PackageTags>json schema validation generator .net</PackageTags>
<Copyright>Copyright © Rico Suter, 2018</Copyright>
<PackageLicenseUrl>https://github.com/rsuter/NJsonSchema/blob/master/LICENSE.md</PackageLicenseUrl>
Expand Down
34 changes: 22 additions & 12 deletions src/NJsonSchema.CodeGeneration/ValueGeneratorBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ namespace NJsonSchema.CodeGeneration
public abstract class ValueGeneratorBase
{
private readonly CodeGeneratorSettingsBase _settings;
private readonly List<string> _formatNotCompatibleWithString = new List<string>()
private readonly List<string> _unsupportedFormatStrings = new List<string>()
{
JsonFormatStrings.Date,
JsonFormatStrings.DateTime,
Expand Down Expand Up @@ -54,28 +54,30 @@ public virtual string GetDefaultValue(JsonSchema4 schema, bool allowsNull, strin

var actualSchema = schema is JsonProperty ? ((JsonProperty)schema).ActualTypeSchema : schema.ActualSchema;
if (actualSchema.IsEnumeration && !actualSchema.Type.HasFlag(JsonObjectType.Object) && actualSchema.Type != JsonObjectType.None)
{
return GetEnumDefaultValue(schema, actualSchema, typeNameHint, typeResolver);
}

if (schema.Type.HasFlag(JsonObjectType.String) && _unsupportedFormatStrings.Contains(schema.Format) == false)
{
return GetDefaultAsStringLiteral(schema);
}
// TODO: Add conversion for format string, e.g. in C# DateTime.Parse()

if (schema.Type.HasFlag(JsonObjectType.String))
return GetStringValue(schema.Type, schema.Default, schema.Format);

if (schema.Type.HasFlag(JsonObjectType.Boolean))
{
return schema.Default.ToString().ToLowerInvariant();
}

if (schema.Type.HasFlag(JsonObjectType.Integer) ||
schema.Type.HasFlag(JsonObjectType.Number))
{
return GetNumericValue(schema.Type, schema.Default, schema.Format);
}

return null;
}

private string GetStringValue(JsonObjectType type, object value, string format)
{
if(!_formatNotCompatibleWithString.Contains(format))
return "\"" + ConversionUtilities.ConvertToStringLiteral(value.ToString()) + "\"";
else
return null;
}

/// <summary>Converts the default value to a number literal. </summary>
/// <param name="type">The JSON type.</param>
/// <param name="value">The value to convert.</param>
Expand All @@ -101,6 +103,14 @@ protected virtual string GetEnumDefaultValue(JsonSchema4 schema, JsonSchema4 act
return typeName + "." + _settings.EnumNameGenerator.Generate(index, enumName, schema.Default, actualSchema);
}

/// <summary>Gets the default value as string literal.</summary>
/// <param name="schema">The schema.</param>
/// <returns>The string literal.</returns>
protected string GetDefaultAsStringLiteral(JsonSchema4 schema)
{
return "\"" + ConversionUtilities.ConvertToStringLiteral(schema.Default.ToString()) + "\"";
}

/// <summary>Converts a number to its string representation.</summary>
/// <param name="value">The value.</param>
/// <returns>The string.</returns>
Expand Down
2 changes: 1 addition & 1 deletion src/NJsonSchema.Yaml/NJsonSchema.Yaml.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFrameworks>netstandard1.3;netstandard2.0;net45</TargetFrameworks>
<Description>JSON Schema reader, generator and validator for .NET</Description>
<Version>9.13.20</Version>
<Version>9.13.21</Version>
<PackageTags>json schema validation generator .net</PackageTags>
<Copyright>Copyright © Rico Suter, 2018</Copyright>
<PackageLicenseUrl>https://github.com/rsuter/NJsonSchema/blob/master/LICENSE.md</PackageLicenseUrl>
Expand Down
2 changes: 1 addition & 1 deletion src/NJsonSchema/NJsonSchema.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFrameworks>netstandard1.0;netstandard2.0;net40;net45</TargetFrameworks>
<Description>JSON Schema reader, generator and validator for .NET</Description>
<Version>9.13.20</Version>
<Version>9.13.21</Version>
<PackageTags>json schema validation generator .net</PackageTags>
<Copyright>Copyright © Rico Suter, 2018</Copyright>
<PackageLicenseUrl>https://github.com/rsuter/NJsonSchema/blob/master/LICENSE.md</PackageLicenseUrl>
Expand Down

0 comments on commit 2ef102e

Please sign in to comment.