Swift 3.0 Preview 2

This commit is contained in:
Yasuhiro Hatta 2016-06-25 18:02:37 +09:00
parent 26b4bd153a
commit 4063a440e5
4 changed files with 16 additions and 15 deletions

View File

@ -12,7 +12,8 @@ internal struct AnyIterator<T>: IteratorProtocol {
private var _base_next: (() -> T?)
internal init<U: IteratorProtocol where U.Element == T>(base: inout U) {
internal init<U: IteratorProtocol where U.Element == T>(base: U) {
var base = base
_base_next = { base.next() }
}

View File

@ -42,8 +42,8 @@ extension CSV {
delimiter: UnicodeScalar = defaultDelimiter)
throws
{
var iterator = string.unicodeScalars.makeIterator()
try self.init(iterator: &iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
let iterator = string.unicodeScalars.makeIterator()
try self.init(iterator: iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
}
}

View File

@ -38,12 +38,12 @@ public struct CSV: IteratorProtocol, Sequence {
private var _headerRow: [String]? = nil
internal init<T: IteratorProtocol where T.Element == UnicodeScalar>(
iterator: inout T,
iterator: T,
hasHeaderRow: Bool,
delimiter: UnicodeScalar)
throws
{
self.iterator = AnyIterator(base: &iterator)
self.iterator = AnyIterator(base: iterator)
self.delimiter = delimiter
if hasHeaderRow {
@ -62,8 +62,8 @@ public struct CSV: IteratorProtocol, Sequence {
throws
{
let reader = BinaryReader(stream: stream, encoding: .utf8, closeOnDeinit: true)
var iterator = UnicodeIterator(input: reader.makeUInt8Iterator(), inputEncoding: codecType)
try self.init(iterator: &iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
let iterator = UnicodeIterator(input: reader.makeUInt8Iterator(), inputEncoding: codecType)
try self.init(iterator: iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
}
/**
@ -87,19 +87,19 @@ public struct CSV: IteratorProtocol, Sequence {
case String.Encoding.utf32,
String.Encoding.utf32BigEndian,
String.Encoding.utf32LittleEndian:
var iterator = UnicodeIterator(input: reader.makeUInt32Iterator(), inputEncoding: UTF32.self)
try self.init(iterator: &iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
let iterator = UnicodeIterator(input: reader.makeUInt32Iterator(), inputEncoding: UTF32.self)
try self.init(iterator: iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
case String.Encoding.utf16,
String.Encoding.utf16BigEndian,
String.Encoding.utf16LittleEndian:
var iterator = UnicodeIterator(input: reader.makeUInt16Iterator(), inputEncoding: UTF16.self)
try self.init(iterator: &iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
let iterator = UnicodeIterator(input: reader.makeUInt16Iterator(), inputEncoding: UTF16.self)
try self.init(iterator: iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
case String.Encoding.utf8,
String.Encoding.ascii:
var iterator = UnicodeIterator(input: reader.makeUInt8Iterator(), inputEncoding: UTF8.self)
try self.init(iterator: &iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
let iterator = UnicodeIterator(input: reader.makeUInt8Iterator(), inputEncoding: UTF8.self)
try self.init(iterator: iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
default:
throw CSVError.StringEncodingMismatch

View File

@ -162,8 +162,8 @@ class CSVTests: XCTestCase {
}
func testCSVState1() {
var it = "あ,い1,\"\",えお\n,,x,".unicodeScalars.makeIterator()
var csv = try! CSV(iterator: &it, hasHeaderRow: defaultHasHeaderRow, delimiter: defaultDelimiter)
let it = "あ,い1,\"\",えお\n,,x,".unicodeScalars.makeIterator()
var csv = try! CSV(iterator: it, hasHeaderRow: defaultHasHeaderRow, delimiter: defaultDelimiter)
var rows = [[String]]()