diff --git a/Sources/Cheetah/InternalHelpers.swift b/Sources/Cheetah/InternalHelpers.swift index 468cd19..98c145c 100644 --- a/Sources/Cheetah/InternalHelpers.swift +++ b/Sources/Cheetah/InternalHelpers.swift @@ -31,3 +31,15 @@ extension UInt16 { ] } } + +extension String { + #if swift(>=4.0) + internal func toCharacterSequence() -> String { + return self + } + #else + internal func toCharacterSequence() -> CharacterView { + return self.characters + } + #endif +} diff --git a/Sources/Cheetah/Parser.swift b/Sources/Cheetah/Parser.swift index 2ae4de4..5daefdb 100644 --- a/Sources/Cheetah/Parser.swift +++ b/Sources/Cheetah/Parser.swift @@ -216,7 +216,7 @@ public struct JSON { func parseFracture(prefix: String, autoNegate: Bool = false) throws -> Double? { var prefix = prefix - if negate && autoNegate && prefix.characters.first != "-" { + if negate && autoNegate && prefix.toCharacterSequence().first != "-" { prefix = "-" + prefix } @@ -228,7 +228,7 @@ public struct JSON { position += 1 } - guard number.characters.count > 0 else { + guard number.toCharacterSequence().count > 0 else { return nil } diff --git a/Sources/Cheetah/Value.swift b/Sources/Cheetah/Value.swift index 969f9ec..b4481ce 100644 --- a/Sources/Cheetah/Value.swift +++ b/Sources/Cheetah/Value.swift @@ -100,7 +100,7 @@ extension String: Value { case 0x00...0x1F: buffer.append(contentsOf: "\\u".utf8) let str = String(char, radix: 16, uppercase: true) - if str.characters.count == 1 { + if str.toCharacterSequence().count == 1 { buffer.append(contentsOf: "000\(str)".utf8) } else { buffer.append(contentsOf: "00\(str)".utf8)