Contents

sanzaru/csvkit

CSVKit is a very simple, fast and lightweight CSV parsing and encoding library for Swift programming.

Installation

Swift Package Manager

Add the following to your Package.swift file:

dependencies: [
    .package(url: "https://github.com/sanzaru/csvkit.git", from: "0.0.1")
]

Example usage

Decoding:

Default decoding
import Foundation
import CSVKit

struct App {
    static func main() {
        // Decode with semicolon (default) separator
        let csvData = "Foo;Bar;Foo2;Bar2\n\"Line2\";\"Line2-1\";\"Line2-2\";\"Line2-3\""
        let parsed = CSVParser.shared.parse(from: csvData)
        dump(parsed)
    }
}

App.main()

Output:

 2 elements
 4 elements
    - "Foo"
    - "Bar"
    - "Foo2"
    - "Bar2"
 4 elements
    - "Line2"
    - "Line2-1"
    - "Line2-2"
    - "Line2-3"
Custom separator
import Foundation
import CSVKit

struct App {
    static func main() {
        // Decode with custom separator
        let csvDataComma = "Foo,Bar,Foo2,Bar2\n\"Line2\",\"Line2-1\",\"Line2-2\",\"Line2-3\""
        
        var parser = CSVParser()
        parser.separator = ","
        
        let parsedComma = parser.parse(from: csvDataComma)
        dump(parsedComma)
    }
}

App.main()

Output:

 2 elements
 4 elements
    - "Foo"
    - "Bar"
    - "Foo2"
    - "Bar2"
 4 elements
    - "Line2"
    - "Line2-1"
    - "Line2-2"
    - "Line2-3"

Encoding:

import Foundation
import CSVKit

struct App {        
    static func main() {
        do {
            let dummyData = "Foo;Bar;Foo2;Bar2\n\"Line2\";\"Line2-1\";\"Line2-2\";\"Line2-3\""
            
            let csvData: [[String]] = CSVParser.shared.parse(from: dummyData) 
            dump(try CSVEncoder.shared.encode(from: csvData))
        } catch {
            fatalError(error.localizedDescription)
        }
    }
}

App.main()

Output:

    "Foo;Bar;Foo2;Bar2\r\nLine2;\"Line2-1\";\"Line2-2\";\"Line2-3\""

Changelog

Version 1.0:

- First release version

Version 0.0.5

- Fixed encoding validation - Extended unit tests

Version 0.0.4

- Better standard conformance (RFC 4180)

Version 0.0.3

- Added encoding functionality - New function parameters and separator handling

Version 0.0.2

- Bugfixes

Version 0.0.1

- First release

License

CSVKit is released under the Apache License 2.0

Package Metadata

Repository: sanzaru/csvkit

Default branch: main

README: README.md