Skip to content

Commit 1ca5d1a

Browse files
authored
Merge pull request #21 from yaslab/develop
Version 2.0
2 parents e740582 + 3639a75 commit 1ca5d1a

25 files changed

+1593
-682
lines changed

.swift-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.0
1+
3.1

.swiftlint.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
disabled_rules:
2+
- force_cast
3+
- force_try
4+
- variable_name
5+
included:
6+
- Sources

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
language: objective-c
2-
osx_image: xcode8
2+
osx_image: xcode8.3
33
env:
44
- LC_CTYPE=en_US.UTF-8
55
git:

CSV.swift.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = 'CSV.swift'
3-
s.version = '1.1.2'
3+
s.version = '2.0.0'
44
s.license = 'MIT'
55
s.summary = 'CSV reading library written in Swift.'
66
s.homepage = 'https://github.com/yaslab/CSV.swift'

CSV.xcodeproj/project.pbxproj

Lines changed: 104 additions & 70 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 75 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,33 @@
22

33
[![Build Status](https://travis-ci.org/yaslab/CSV.swift.svg?branch=master)](https://travis-ci.org/yaslab/CSV.swift)
44

5-
CSV reading library written in Swift.
5+
CSV reading and writing library written in Swift.
66

7-
## Usage
7+
## Usage for reading CSV
88

9-
### From CSV string
9+
### From string
1010

1111
```swift
1212
import CSV
1313

14-
for row in try! CSV(string: "1,foo\n2,bar") {
14+
let csvString = "1,foo\n2,bar"
15+
let csv = try! CSVReader(string: csvString)
16+
while let row = csv.next() {
1517
print("\(row)")
16-
// => ["1", "foo"]
17-
// => ["2", "bar"]
1818
}
19+
// => ["1", "foo"]
20+
// => ["2", "bar"]
1921
```
2022

21-
### From file path
23+
### From file
2224

2325
```swift
2426
import Foundation
2527
import CSV
2628

2729
let stream = InputStream(fileAtPath: "/path/to/file.csv")!
28-
for row in try! CSV(stream: stream) {
30+
let csv = try! CSVReader(stream: stream)
31+
while let row = csv.next() {
2932
print("\(row)")
3033
}
3134
```
@@ -35,30 +38,30 @@ for row in try! CSV(stream: stream) {
3538
```swift
3639
import CSV
3740

38-
let csv = try! CSV(
39-
string: "id,name\n1,foo\n2,bar",
40-
hasHeaderRow: true) // default: false
41+
let csvString = "id,name\n1,foo\n2,bar"
42+
let csv = try! CSVReader(string: csvString,
43+
hasHeaderRow: true) // It must be true.
4144

4245
let headerRow = csv.headerRow!
4346
print("\(headerRow)") // => ["id", "name"]
4447

45-
for row in csv {
48+
while let row = csv.next() {
4649
print("\(row)")
47-
// => ["1", "foo"]
48-
// => ["2", "bar"]
4950
}
51+
// => ["1", "foo"]
52+
// => ["2", "bar"]
5053
```
5154

5255
### Get the field value using subscript
5356

5457
```swift
5558
import CSV
5659

57-
var csv = try! CSV(
58-
string: "id,name\n1,foo",
59-
hasHeaderRow: true) // It must be true.
60+
let csvString = "id,name\n1,foo"
61+
let csv = try! CSVReader(string: csvString,
62+
hasHeaderRow: true) // It must be true.
6063

61-
while let _ = csv.next() {
64+
while csv.next() != nil {
6265
print("\(csv["id"]!)") // => "1"
6366
print("\(csv["name"]!)") // => "foo"
6467
}
@@ -72,24 +75,71 @@ If you use a file path, you can provide the character encoding to initializer.
7275
import Foundation
7376
import CSV
7477

75-
let csv = try! CSV(
76-
stream: InputStream(fileAtPath: "/path/to/file.csv")!,
77-
codecType: UTF16.self,
78-
endian: .big)
78+
let stream = InputStream(fileAtPath: "/path/to/file.csv")!
79+
let csv = try! CSV(stream: stream,
80+
codecType: UTF16.self,
81+
endian: .big)
82+
```
83+
84+
## Usage for writing CSV
85+
86+
### Write to memory and get a CSV String
87+
88+
```swift
89+
import Foundation
90+
import CSV
91+
92+
let stream = OutputStream(toMemory: ())
93+
let csv = try! CSVWriter(stream: stream)
94+
95+
// Write a row
96+
try! csv.write(row: ["id", "name"])
97+
98+
// Write fields separately
99+
csv.beginNewRow()
100+
try! csv.write(field: "1")
101+
try! csv.write(field: "foo")
102+
csv.beginNewRow()
103+
try! csv.write(field: "2")
104+
try! csv.write(field: "bar")
105+
106+
csv.stream.close()
107+
108+
// Get a String
109+
let csvData = stream.property(forKey: .dataWrittenToMemoryStreamKey) as! NSData
110+
let csvString = String(data: Data(referencing: csvData), encoding: .utf8)!
111+
print(csvString)
112+
// => "id,name\n1,foo\n2,bar"
113+
```
114+
115+
### Write to file
116+
117+
```swift
118+
import Foundation
119+
import CSV
120+
121+
let stream = OutputStream(toFileAtPath: "/path/to/file.csv", append: false)!
122+
let csv = try! CSVWriter(stream: stream)
123+
124+
try! csv.write(row: ["id", "name"])
125+
try! csv.write(row: ["1", "foo"])
126+
try! csv.write(row: ["1", "bar"])
127+
128+
csv.stream.close()
79129
```
80130

81131
## Installation
82132

83133
### CocoaPods
84134

85135
```ruby
86-
pod 'CSV.swift', '~> 1.1'
136+
pod 'CSV.swift', '~> 2.0'
87137
```
88138

89139
### Carthage
90140

91141
```
92-
github "yaslab/CSV.swift" ~> 1.1
142+
github "yaslab/CSV.swift" ~> 2.0
93143
```
94144

95145
### Swift Package Manager
@@ -100,7 +150,7 @@ import PackageDescription
100150
let package = Package(
101151
name: "PackageName",
102152
dependencies: [
103-
.Package(url: "https://github.com/yaslab/CSV.swift.git", majorVersion: 1, minor: 1)
153+
.Package(url: "https://github.com/yaslab/CSV.swift.git", majorVersion: 2, minor: 0)
104154
]
105155
)
106156
```

0 commit comments

Comments
 (0)