Skip to content
This repository has been archived by the owner on Mar 23, 2021. It is now read-only.

Commit

Permalink
Updating to Swift 07-25 (#35)
Browse files Browse the repository at this point in the history
* Updating to Swift 07-25

* Adapted tests

* Enabling perf tests on Linux

* Improved test data handling

* Simplified test manifests
  • Loading branch information
czechboy0 authored Jul 26, 2016
1 parent ce69aae commit 59a6439
Show file tree
Hide file tree
Showing 21 changed files with 371 additions and 276 deletions.
2 changes: 1 addition & 1 deletion .swift-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
DEVELOPMENT-SNAPSHOT-2016-06-20-a
DEVELOPMENT-SNAPSHOT-2016-07-25-a
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ do {
## Swift Package Manager

```swift
.Package(url: "https://github.com/czechboy0/Jay.git", majorVersion: 0, minor: 15)
.Package(url: "https://github.com/czechboy0/Jay.git", majorVersion: 0, minor: 16)
```

:blue_heart: Code of Conduct
Expand Down
4 changes: 2 additions & 2 deletions Sources/Jay/ArrayParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ struct ArrayParser: JsonParser {

//detect opening bracket
guard reader.curr() == Const.BeginArray else {
throw Error.UnexpectedCharacter(reader)
throw JayError.unexpectedCharacter(reader)
}
try reader.nextAndCheckNotDone()

Expand Down Expand Up @@ -43,7 +43,7 @@ struct ArrayParser: JsonParser {
switch reader.curr() {
case Const.EndArray: try reader.next(); return (.array(values), reader)
case Const.ValueSeparator: try reader.next(); break //comma, so another value must come. let the loop repeat.
default: throw Error.UnexpectedCharacter(reader)
default: throw JayError.unexpectedCharacter(reader)
}
} while true
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/Jay/BooleanParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ struct BooleanParser: JsonParser {
switch char {
case Const.True[0]: return try parseTrue(reader)
case Const.False[0]: return try parseFalse(reader)
default: throw Error.UnexpectedCharacter(reader)
default: throw JayError.unexpectedCharacter(reader)
}
}
}
38 changes: 19 additions & 19 deletions Sources/Jay/Error.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,24 @@
// Copyright © 2016 Honza Dvorsky. All rights reserved.
//

enum Error: ErrorProtocol {
case UnexpectedEnd(Reader)
case Unimplemented(String)
case ParseStringFromCharsFailed([JChar])
case UnexpectedCharacter(Reader)
case Mismatch(Reader, Reader)
case NumberParsingFailed(Reader)
case InvalidUnicodeSpecifier(Reader)
case InvalidEscape(Reader)
case UnescapedControlCharacterInString(Reader)
case UnicodeCharacterParsing([JChar], Reader)
case InvalidSurrogatePair(UInt16, UInt16, Reader)
case ObjectNameSeparatorMissing(Reader)
case FailedToConvertIntoNativeType(JSON)
case UnsupportedType(Any)
case UnsupportedFloatingPointType(Any)
case UnsupportedIntegerType(Any)
case KeyIsNotString(Any)
case ExtraTokensFound(Reader)
enum JayError: Swift.Error {
case unexpectedEnd(Reader)
case unimplemented(String)
case parseStringFromCharsFailed([JChar])
case unexpectedCharacter(Reader)
case mismatch(Reader, Reader)
case numberParsingFailed(Reader)
case invalidUnicodeSpecifier(Reader)
case invalidEscape(Reader)
case unescapedControlCharacterInString(Reader)
case unicodeCharacterParsing([JChar], Reader)
case invalidSurrogatePair(UInt16, UInt16, Reader)
case objectNameSeparatorMissing(Reader)
case failedToConvertIntoNativeType(JSON)
case unsupportedType(Any)
case unsupportedFloatingPointType(Any)
case unsupportedIntegerType(Any)
case keyIsNotString(Any)
case extraTokensFound(Reader)
}

2 changes: 1 addition & 1 deletion Sources/Jay/Extensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ extension Collection where Iterator.Element == UInt8 {
case .emptyInput: //we're done
return str
case .error: //error, can't describe what however
throw Error.ParseStringFromCharsFailed(Array(self))
throw JayError.parseStringFromCharsFailed(Array(self))
case .scalarValue(let unicodeScalar):
str.append(unicodeScalar)
}
Expand Down
30 changes: 14 additions & 16 deletions Sources/Jay/NativeTypeConversions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ extension JSON {
struct NativeTypeConverter {

func convertPair(k: Any, v: Any) throws -> (String, JSON) {
guard let key = k as? String else { throw Error.KeyIsNotString(k) }
guard let key = k as? String else { throw JayError.keyIsNotString(k) }
let value = try self.toJayType(v as Any)
return (key, value)
}
Expand All @@ -82,7 +82,7 @@ struct NativeTypeConverter {
//for Linux reasons we must cast into CustomStringConvertible instead of String
//revert once bridging works.
// guard let key = i.key as? String else { throw Error.KeyIsNotString(i.key) }
guard let key = i.key as? CustomStringConvertible else { throw Error.KeyIsNotString(i.key) }
guard let key = i.key as? CustomStringConvertible else { throw JayError.keyIsNotString(i.key) }
let value = i.value as Any
dOut[key.description] = value
}
Expand Down Expand Up @@ -110,12 +110,12 @@ struct NativeTypeConverter {
let it = children.makeIterator()
let maybeKey = it.next()!.value
guard let key = maybeKey as? String else {
throw Error.KeyIsNotString(maybeKey)
throw JayError.keyIsNotString(maybeKey)
}
let value = it.next()!.value
obj[key] = try self.toJayType(value)
} else {
throw Error.UnsupportedType(childMirror)
throw JayError.unsupportedType(childMirror)
}
}
return .object(obj)
Expand All @@ -128,14 +128,14 @@ struct NativeTypeConverter {

if let nsdict = json as? NSDictionary {
guard let dict = try self.parseNSDictionary(nsdict) else {
throw Error.UnsupportedType(nsdict)
throw JayError.unsupportedType(nsdict)
}
return dict
}

if let nsarray = json as? NSArray {
guard let array = try self.parseNSArray(nsarray) else {
throw Error.UnsupportedType(nsarray)
throw JayError.unsupportedType(nsarray)
}
return array
}
Expand All @@ -144,33 +144,32 @@ struct NativeTypeConverter {

if mirror.displayStyle == .dictionary {
guard let dict = try self.dictionaryToJayType(json) else {
throw Error.UnsupportedType(json)
throw JayError.unsupportedType(json)
}
return dict
}

if mirror.displayStyle == .collection {
guard let array = try self.arrayToJayType(json) else {
throw Error.UnsupportedType(json)
throw JayError.unsupportedType(json)
}
return array
}

switch json {

//boolean
case let bool as Boolean:
return .boolean(bool.boolValue)

case let bool as Bool:
return .boolean(bool)
//number
case let dbl as FloatingPoint:
guard let double = Double(String(dbl)) else {
throw Error.UnsupportedFloatingPointType(dbl)
throw JayError.unsupportedFloatingPointType(dbl)
}
return .number(.double(double))
case let int as Integer:
case let int as Int:
guard let integer = Int(String(int)) else {
throw Error.UnsupportedIntegerType(int)
throw JayError.unsupportedIntegerType(int)
}
return .number(.integer(integer))
case let num as NSNumber:
Expand All @@ -180,7 +179,6 @@ struct NativeTypeConverter {
return .number(.integer(Int(num.intValue)))
}
return .number(.double(num.doubleValue))

//string (or anything representable as string that didn't match above)
case let string as String:
return .string(string)
Expand All @@ -190,7 +188,7 @@ struct NativeTypeConverter {
default: break
}
//nothing matched
throw Error.UnsupportedType("\(Mirror(reflecting: json))")
throw JayError.unsupportedType("\(Mirror(reflecting: json))")
}
}

Expand Down
14 changes: 7 additions & 7 deletions Sources/Jay/NumberParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ struct NumberParser: JsonParser {
//take first digit, which can only be 1...9
var digits = Const.Digits1to9
guard digits.contains(reader.curr()) else {
throw Error.NumberParsingFailed(reader)
throw JayError.numberParsingFailed(reader)
}
digs.append(reader.curr())
try reader.nextAndCheckNotDone()
Expand Down Expand Up @@ -160,7 +160,7 @@ struct NumberParser: JsonParser {
}

//okay, we encountered an illegal character, error out
throw Error.NumberParsingFailed(reader)
throw JayError.numberParsingFailed(reader)
}
}

Expand All @@ -170,15 +170,15 @@ struct NumberParser: JsonParser {

//frac part MUST start with decimal point!
guard reader.curr() == Const.DecimalPoint else {
throw Error.NumberParsingFailed(reader)
throw JayError.numberParsingFailed(reader)
}
try reader.nextAndCheckNotDone()

var digs = [JChar]()

//at least one digit 0...9 must follow
guard Const.Digits0to9.contains(reader.curr()) else {
throw Error.NumberParsingFailed(reader)
throw JayError.numberParsingFailed(reader)
}
digs.append(reader.curr())
try reader.nextAndCheckNotDone()
Expand Down Expand Up @@ -209,7 +209,7 @@ struct NumberParser: JsonParser {
}

//okay, we encountered an illegal character, error out
throw Error.NumberParsingFailed(reader)
throw JayError.numberParsingFailed(reader)
}
}

Expand Down Expand Up @@ -239,7 +239,7 @@ struct NumberParser: JsonParser {

//at least one digit 1...9 must follow
guard Const.Digits1to9.contains(reader.curr()) else {
throw Error.NumberParsingFailed(reader)
throw JayError.numberParsingFailed(reader)
}
digs.append(reader.curr())
try reader.nextAndCheckNotDone()
Expand Down Expand Up @@ -269,7 +269,7 @@ struct NumberParser: JsonParser {
}

//okay, we encountered an illegal character, error out
throw Error.NumberParsingFailed(reader)
throw JayError.numberParsingFailed(reader)
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions Sources/Jay/ObjectParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ struct ObjectParser: JsonParser {

//detect opening brace
guard reader.curr() == Const.BeginObject else {
throw Error.UnexpectedCharacter(reader)
throw JayError.unexpectedCharacter(reader)
}
try reader.nextAndCheckNotDone()

Expand Down Expand Up @@ -44,7 +44,7 @@ struct ObjectParser: JsonParser {
//scan for name separator :
reader = try self.prepareForReading(withReader: reader)
guard reader.curr() == Const.NameSeparator else {
throw Error.ObjectNameSeparatorMissing(reader)
throw JayError.objectNameSeparatorMissing(reader)
}
try reader.nextAndCheckNotDone()

Expand All @@ -68,7 +68,7 @@ struct ObjectParser: JsonParser {
//comma, so another value must come. let the loop repeat.
try reader.next()
continue
default: throw Error.UnexpectedCharacter(reader)
default: throw JayError.unexpectedCharacter(reader)
}
} while true
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/Jay/Parser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ struct Parser {
//skip whitespace and ensure no more tokens are present, otherwise throw
try endReader.consumeWhitespace()
guard endReader.isDone() else {
throw Error.ExtraTokensFound(endReader)
throw JayError.extraTokensFound(endReader)
}
}

Expand Down
6 changes: 3 additions & 3 deletions Sources/Jay/Reader.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ extension Reader {

func ensureNotDone() throws {
if self.isDone() {
throw Error.UnexpectedEnd(self)
throw JayError.unexpectedEnd(self)
}
}

Expand Down Expand Up @@ -85,14 +85,14 @@ extension Reader {

if self.isDone() {
//b) no match
throw Error.Mismatch(self, other)
throw JayError.mismatch(self, other)
}

let charSelf = self.curr()
let charOther = other.curr()
guard charSelf == charOther else {
//c) no match
throw Error.Mismatch(self, other)
throw JayError.mismatch(self, other)
}

try self.next()
Expand Down
2 changes: 1 addition & 1 deletion Sources/Jay/RootParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ struct RootParser: JsonParser {
case Const.BeginArray:
(root, reader) = try ArrayParser().parse(withReader: reader)
default:
throw Error.Unimplemented("ParseRoot")
throw JayError.unimplemented("ParseRoot")
}
return (root, reader)
}
Expand Down
Loading

0 comments on commit 59a6439

Please sign in to comment.