Swift 3.0 Preview 2
This commit is contained in:
parent
26b4bd153a
commit
4063a440e5
|
@ -12,7 +12,8 @@ internal struct AnyIterator<T>: IteratorProtocol {
|
||||||
|
|
||||||
private var _base_next: (() -> T?)
|
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() }
|
_base_next = { base.next() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,8 +42,8 @@ extension CSV {
|
||||||
delimiter: UnicodeScalar = defaultDelimiter)
|
delimiter: UnicodeScalar = defaultDelimiter)
|
||||||
throws
|
throws
|
||||||
{
|
{
|
||||||
var iterator = string.unicodeScalars.makeIterator()
|
let iterator = string.unicodeScalars.makeIterator()
|
||||||
try self.init(iterator: &iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
|
try self.init(iterator: iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,12 +38,12 @@ public struct CSV: IteratorProtocol, Sequence {
|
||||||
private var _headerRow: [String]? = nil
|
private var _headerRow: [String]? = nil
|
||||||
|
|
||||||
internal init<T: IteratorProtocol where T.Element == UnicodeScalar>(
|
internal init<T: IteratorProtocol where T.Element == UnicodeScalar>(
|
||||||
iterator: inout T,
|
iterator: T,
|
||||||
hasHeaderRow: Bool,
|
hasHeaderRow: Bool,
|
||||||
delimiter: UnicodeScalar)
|
delimiter: UnicodeScalar)
|
||||||
throws
|
throws
|
||||||
{
|
{
|
||||||
self.iterator = AnyIterator(base: &iterator)
|
self.iterator = AnyIterator(base: iterator)
|
||||||
self.delimiter = delimiter
|
self.delimiter = delimiter
|
||||||
|
|
||||||
if hasHeaderRow {
|
if hasHeaderRow {
|
||||||
|
@ -62,8 +62,8 @@ public struct CSV: IteratorProtocol, Sequence {
|
||||||
throws
|
throws
|
||||||
{
|
{
|
||||||
let reader = BinaryReader(stream: stream, encoding: .utf8, closeOnDeinit: true)
|
let reader = BinaryReader(stream: stream, encoding: .utf8, closeOnDeinit: true)
|
||||||
var iterator = UnicodeIterator(input: reader.makeUInt8Iterator(), inputEncoding: codecType)
|
let iterator = UnicodeIterator(input: reader.makeUInt8Iterator(), inputEncoding: codecType)
|
||||||
try self.init(iterator: &iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
|
try self.init(iterator: iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -87,19 +87,19 @@ public struct CSV: IteratorProtocol, Sequence {
|
||||||
case String.Encoding.utf32,
|
case String.Encoding.utf32,
|
||||||
String.Encoding.utf32BigEndian,
|
String.Encoding.utf32BigEndian,
|
||||||
String.Encoding.utf32LittleEndian:
|
String.Encoding.utf32LittleEndian:
|
||||||
var iterator = UnicodeIterator(input: reader.makeUInt32Iterator(), inputEncoding: UTF32.self)
|
let iterator = UnicodeIterator(input: reader.makeUInt32Iterator(), inputEncoding: UTF32.self)
|
||||||
try self.init(iterator: &iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
|
try self.init(iterator: iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
|
||||||
|
|
||||||
case String.Encoding.utf16,
|
case String.Encoding.utf16,
|
||||||
String.Encoding.utf16BigEndian,
|
String.Encoding.utf16BigEndian,
|
||||||
String.Encoding.utf16LittleEndian:
|
String.Encoding.utf16LittleEndian:
|
||||||
var iterator = UnicodeIterator(input: reader.makeUInt16Iterator(), inputEncoding: UTF16.self)
|
let iterator = UnicodeIterator(input: reader.makeUInt16Iterator(), inputEncoding: UTF16.self)
|
||||||
try self.init(iterator: &iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
|
try self.init(iterator: iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
|
||||||
|
|
||||||
case String.Encoding.utf8,
|
case String.Encoding.utf8,
|
||||||
String.Encoding.ascii:
|
String.Encoding.ascii:
|
||||||
var iterator = UnicodeIterator(input: reader.makeUInt8Iterator(), inputEncoding: UTF8.self)
|
let iterator = UnicodeIterator(input: reader.makeUInt8Iterator(), inputEncoding: UTF8.self)
|
||||||
try self.init(iterator: &iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
|
try self.init(iterator: iterator, hasHeaderRow: hasHeaderRow, delimiter: delimiter)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw CSVError.StringEncodingMismatch
|
throw CSVError.StringEncodingMismatch
|
||||||
|
|
|
@ -162,8 +162,8 @@ class CSVTests: XCTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
func testCSVState1() {
|
func testCSVState1() {
|
||||||
var it = "あ,い1,\"う\",えお\n,,x,".unicodeScalars.makeIterator()
|
let it = "あ,い1,\"う\",えお\n,,x,".unicodeScalars.makeIterator()
|
||||||
var csv = try! CSV(iterator: &it, hasHeaderRow: defaultHasHeaderRow, delimiter: defaultDelimiter)
|
var csv = try! CSV(iterator: it, hasHeaderRow: defaultHasHeaderRow, delimiter: defaultDelimiter)
|
||||||
|
|
||||||
var rows = [[String]]()
|
var rows = [[String]]()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue