Skip to content

Commit

Permalink
Complete the rest of the tests and functionality
Browse files Browse the repository at this point in the history
Except serialization and JSON API support.
  • Loading branch information
isair committed Apr 18, 2016
1 parent 82901fd commit c00e77d
Show file tree
Hide file tree
Showing 9 changed files with 191 additions and 219 deletions.
2 changes: 1 addition & 1 deletion JSONHelper.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'JSONHelper'
s.version = '1.7.0'
s.version = '2.0.0'
s.license = { :type => 'zlib', :file => 'LICENSE' }
s.summary = 'Lightning fast JSON deserialization and value conversion library for iOS & OS X written in Swift.'

Expand Down
68 changes: 47 additions & 21 deletions JSONHelper.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,17 @@
5F31FF5E1C533AE000EF50C4 /* Deserialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF5D1C533AE000EF50C4 /* Deserialization.swift */; };
5F31FF601C533E9900EF50C4 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF5F1C533E9900EF50C4 /* Color.swift */; };
5F31FF611C533E9900EF50C4 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF5F1C533E9900EF50C4 /* Color.swift */; };
5F31FF621C533E9900EF50C4 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF5F1C533E9900EF50C4 /* Color.swift */; };
5F31FF631C533E9D00EF50C4 /* Deserialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF5D1C533AE000EF50C4 /* Deserialization.swift */; };
5F31FF641C533E9D00EF50C4 /* Deserialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF5D1C533AE000EF50C4 /* Deserialization.swift */; };
5F31FF651C533EA000EF50C4 /* Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF5B1C533AD400EF50C4 /* Conversion.swift */; };
5F31FF661C533EA100EF50C4 /* Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF5B1C533AD400EF50C4 /* Conversion.swift */; };
5F31FF691C533EAA00EF50C4 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC1A4861B1CFFB500EF50C4 /* String.swift */; };
5F31FF6A1C533EAD00EF50C4 /* Int.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC1A4881B1D024500EF50C4 /* Int.swift */; };
5F31FF6C1C533F1600EF50C4 /* ColorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF6B1C533F1600EF50C4 /* ColorTests.swift */; };
5F31FF6E1C5348F000EF50C4 /* NSDecimalNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF6D1C5348F000EF50C4 /* NSDecimalNumber.swift */; };
5F31FF6F1C5348F000EF50C4 /* NSDecimalNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF6D1C5348F000EF50C4 /* NSDecimalNumber.swift */; };
5F31FF701C5348F000EF50C4 /* NSDecimalNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF6D1C5348F000EF50C4 /* NSDecimalNumber.swift */; };
5F31FF721C5348FE00EF50C4 /* Double.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF711C5348FE00EF50C4 /* Double.swift */; };
5F31FF731C5348FE00EF50C4 /* Double.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF711C5348FE00EF50C4 /* Double.swift */; };
5F31FF741C5348FE00EF50C4 /* Double.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF711C5348FE00EF50C4 /* Double.swift */; };
5F31FF761C53490B00EF50C4 /* Float.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF751C53490B00EF50C4 /* Float.swift */; };
5F31FF771C53490B00EF50C4 /* Float.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF751C53490B00EF50C4 /* Float.swift */; };
5F31FF781C53490B00EF50C4 /* Float.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF751C53490B00EF50C4 /* Float.swift */; };
5F31FF7A1C53496B00EF50C4 /* DoubleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF791C53496B00EF50C4 /* DoubleTests.swift */; };
5F31FF7C1C53497600EF50C4 /* FloatTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF7B1C53497600EF50C4 /* FloatTests.swift */; };
5F31FF7E1C53499000EF50C4 /* NSDecimalNumberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF7D1C53499000EF50C4 /* NSDecimalNumberTests.swift */; };
Expand All @@ -44,6 +38,7 @@
5F6A2F4E1CC096DA00EF50C4 /* Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F6A2F4D1CC096DA00EF50C4 /* Serialization.swift */; };
5F6A2F4F1CC096DA00EF50C4 /* Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F6A2F4D1CC096DA00EF50C4 /* Serialization.swift */; };
5F6A2F501CC096DA00EF50C4 /* Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F6A2F4D1CC096DA00EF50C4 /* Serialization.swift */; };
5F6A2F531CC09B9A00EF50C4 /* DeserializableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F6A2F521CC09B9A00EF50C4 /* DeserializableTests.swift */; };
5F8F88231CA5F32E00EF50C4 /* DictionaryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F8F88221CA5F32E00EF50C4 /* DictionaryTests.swift */; };
5F8F88251CA5F33500EF50C4 /* EnumTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F8F88241CA5F33500EF50C4 /* EnumTests.swift */; };
5F928D991C0D469F00EF50C4 /* JSONHelper-tvOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F928D981C0D469F00EF50C4 /* JSONHelper-tvOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
Expand All @@ -67,6 +62,15 @@
5FC1A4941B1D1D8B00EF50C4 /* NSURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC1A4931B1D1D8B00EF50C4 /* NSURL.swift */; };
5FC1A4951B1D1D8B00EF50C4 /* NSURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC1A4931B1D1D8B00EF50C4 /* NSURL.swift */; };
5FD3A0A01CA5F5C300EF50C4 /* ArrayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FD3A09F1CA5F5C300EF50C4 /* ArrayTests.swift */; };
5FDBD51A1CC46C2A00EF50C4 /* Bool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC1A48D1B1D057B00EF50C4 /* Bool.swift */; };
5FDBD51B1CC46C2A00EF50C4 /* Int.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC1A4881B1D024500EF50C4 /* Int.swift */; };
5FDBD51C1CC46C2A00EF50C4 /* Float.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF751C53490B00EF50C4 /* Float.swift */; };
5FDBD51D1CC46C2A00EF50C4 /* Double.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF711C5348FE00EF50C4 /* Double.swift */; };
5FDBD51E1CC46C2A00EF50C4 /* NSDecimalNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF6D1C5348F000EF50C4 /* NSDecimalNumber.swift */; };
5FDBD51F1CC46C2A00EF50C4 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC1A4861B1CFFB500EF50C4 /* String.swift */; };
5FDBD5201CC46C2A00EF50C4 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F31FF5F1C533E9900EF50C4 /* Color.swift */; };
5FDBD5211CC46C2A00EF50C4 /* NSDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC1A48F1B1D082500EF50C4 /* NSDate.swift */; };
5FDBD5221CC46C2A00EF50C4 /* NSURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC1A4931B1D1D8B00EF50C4 /* NSURL.swift */; };
D76C52051ACD46B100B49735 /* JSONHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FAD07691A70F2FC00C4D09E /* JSONHelper.h */; settings = {ATTRIBUTES = (Public, ); }; };
/* End PBXBuildFile section */

Expand Down Expand Up @@ -106,6 +110,7 @@
5F31FF7D1C53499000EF50C4 /* NSDecimalNumberTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDecimalNumberTests.swift; sourceTree = "<group>"; };
5F6A2F491CC0116D00EF50C4 /* JSONHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JSONHelper.swift; sourceTree = "<group>"; };
5F6A2F4D1CC096DA00EF50C4 /* Serialization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Serialization.swift; sourceTree = "<group>"; };
5F6A2F521CC09B9A00EF50C4 /* DeserializableTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeserializableTests.swift; sourceTree = "<group>"; };
5F8F88221CA5F32E00EF50C4 /* DictionaryTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DictionaryTests.swift; sourceTree = "<group>"; };
5F8F88241CA5F33500EF50C4 /* EnumTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnumTests.swift; sourceTree = "<group>"; };
5F928D961C0D469F00EF50C4 /* JSONHelper.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JSONHelper.framework; sourceTree = BUILT_PRODUCTS_DIR; };
Expand Down Expand Up @@ -199,6 +204,29 @@
name = Support;
sourceTree = "<group>";
};
5F6A2F511CC09B6000EF50C4 /* Extension Tests */ = {
isa = PBXGroup;
children = (
5F024AE21B412BA900EF50C4 /* BoolTests.swift */,
5F024AE01B4127C900EF50C4 /* IntTests.swift */,
5F31FF7B1C53497600EF50C4 /* FloatTests.swift */,
5F31FF791C53496B00EF50C4 /* DoubleTests.swift */,
5F31FF7D1C53499000EF50C4 /* NSDecimalNumberTests.swift */,
5FB9D4DF1B38007C00EF50C4 /* StringTests.swift */,
5F31FF6B1C533F1600EF50C4 /* ColorTests.swift */,
5F31FF551C5339B900EF50C4 /* NSDateTests.swift */,
5F31FF571C5339CE00EF50C4 /* NSURLTests.swift */,
);
name = "Extension Tests";
sourceTree = "<group>";
};
5F6A2F541CC09BB500EF50C4 /* Support Tests */ = {
isa = PBXGroup;
children = (
);
name = "Support Tests";
sourceTree = "<group>";
};
5F928D9F1C0D478800EF50C4 /* tvOS */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -260,18 +288,12 @@
isa = PBXGroup;
children = (
5FAD07761A70F2FC00C4D09E /* JSONHelperTests.swift */,
5F024AE21B412BA900EF50C4 /* BoolTests.swift */,
5F024AE01B4127C900EF50C4 /* IntTests.swift */,
5F31FF7B1C53497600EF50C4 /* FloatTests.swift */,
5F31FF791C53496B00EF50C4 /* DoubleTests.swift */,
5F31FF7D1C53499000EF50C4 /* NSDecimalNumberTests.swift */,
5FB9D4DF1B38007C00EF50C4 /* StringTests.swift */,
5F6A2F511CC09B6000EF50C4 /* Extension Tests */,
5F8F88241CA5F33500EF50C4 /* EnumTests.swift */,
5F31FF6B1C533F1600EF50C4 /* ColorTests.swift */,
5F31FF551C5339B900EF50C4 /* NSDateTests.swift */,
5F31FF571C5339CE00EF50C4 /* NSURLTests.swift */,
5F6A2F521CC09B9A00EF50C4 /* DeserializableTests.swift */,
5FD3A09F1CA5F5C300EF50C4 /* ArrayTests.swift */,
5F8F88221CA5F32E00EF50C4 /* DictionaryTests.swift */,
5F6A2F541CC09BB500EF50C4 /* Support Tests */,
);
path = JSONHelperTests;
sourceTree = "<group>";
Expand Down Expand Up @@ -541,17 +563,20 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
5F31FF691C533EAA00EF50C4 /* String.swift in Sources */,
5F31FF701C5348F000EF50C4 /* NSDecimalNumber.swift in Sources */,
5FDBD5221CC46C2A00EF50C4 /* NSURL.swift in Sources */,
5F31FF641C533E9D00EF50C4 /* Deserialization.swift in Sources */,
5F31FF6A1C533EAD00EF50C4 /* Int.swift in Sources */,
5FDBD51F1CC46C2A00EF50C4 /* String.swift in Sources */,
5F31FF661C533EA100EF50C4 /* Conversion.swift in Sources */,
5F31FF781C53490B00EF50C4 /* Float.swift in Sources */,
5F133DA41C3840CA00EF50C4 /* JSONAPI.swift in Sources */,
5F31FF741C5348FE00EF50C4 /* Double.swift in Sources */,
5F31FF621C533E9900EF50C4 /* Color.swift in Sources */,
5FDBD51B1CC46C2A00EF50C4 /* Int.swift in Sources */,
5FDBD5201CC46C2A00EF50C4 /* Color.swift in Sources */,
5FDBD51C1CC46C2A00EF50C4 /* Float.swift in Sources */,
5FDBD51E1CC46C2A00EF50C4 /* NSDecimalNumber.swift in Sources */,
5F6A2F501CC096DA00EF50C4 /* Serialization.swift in Sources */,
5F6A2F4C1CC0116D00EF50C4 /* JSONHelper.swift in Sources */,
5FDBD5211CC46C2A00EF50C4 /* NSDate.swift in Sources */,
5FDBD51D1CC46C2A00EF50C4 /* Double.swift in Sources */,
5FDBD51A1CC46C2A00EF50C4 /* Bool.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -581,6 +606,7 @@
buildActionMask = 2147483647;
files = (
5F024AE11B4127C900EF50C4 /* IntTests.swift in Sources */,
5F6A2F531CC09B9A00EF50C4 /* DeserializableTests.swift in Sources */,
5F024AE31B412BA900EF50C4 /* BoolTests.swift in Sources */,
5F31FF7A1C53496B00EF50C4 /* DoubleTests.swift in Sources */,
5F31FF7E1C53499000EF50C4 /* NSDecimalNumberTests.swift in Sources */,
Expand Down
12 changes: 12 additions & 0 deletions JSONHelper/Conversion.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,18 @@ public protocol Convertible {

// MARK: - Basic Conversion

public func <-- <T, U>(inout lhs: T?, rhs: U?) throws -> T? {
lhs = rhs as? T
return lhs
}

public func <-- <T, U>(inout lhs: T, rhs: U?) throws -> T {
var newValue: T?
try newValue <-- rhs
lhs = newValue ?? lhs
return lhs
}

public func <-- <C: Convertible, T>(inout lhs: C?, rhs: T?) throws -> C? {
lhs = try C.convertFromValue(JSONHelper.convertToNilIfNull(rhs))
return lhs
Expand Down
4 changes: 4 additions & 0 deletions JSONHelper/Extensions/Color.swift
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ import AppKit
extension NSColor: Convertible {

public static func convertFromValue<T>(value: T?) throws -> Self? {
guard let value = value else { return nil }

if let stringValue = value as? String {
let rgba = try ColorConversionHelper.hexStringToRGBA(stringValue)
return self.init(red: rgba.red, green: rgba.green, blue: rgba.blue, alpha: rgba.alpha)
Expand All @@ -68,6 +70,8 @@ import UIKit
extension UIColor: Convertible {

public static func convertFromValue<T>(value: T?) throws -> Self? {
guard let value = value else { return nil }

if let stringValue = value as? String {
let rgba = try ColorConversionHelper.hexStringToRGBA(stringValue)
return self.init(red: rgba.red, green: rgba.green, blue: rgba.blue, alpha: rgba.alpha)
Expand Down
6 changes: 5 additions & 1 deletion JSONHelper/Extensions/NSURL.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ import Foundation
extension NSURL: Convertible {

public static func convertFromValue<T>(value: T?) throws -> Self? {
if let stringValue = value as? String {
guard let value = value else { return nil }

if let urlValue = value as? NSURL {
return self.init(string: urlValue.absoluteString)
} else if let stringValue = value as? String {
return self.init(string: stringValue)
}

Expand Down
Loading

0 comments on commit c00e77d

Please sign in to comment.