Merge tag 'csv2edn-0.1.5'
This commit is contained in:
commit
6523e41ec2
26
README.md
26
README.md
|
@ -1,36 +1,44 @@
|
|||
# csv2edn
|
||||
|
||||
Simple command line utility to convert CSV files to EDN. Assumes the first row of a CSV file contains column headers.
|
||||
Simple command line utility and library to convert
|
||||
[comma-separated value (CSV)](https://tools.ietf.org/html/rfc4180) files to
|
||||
[extensible data notation (EDN)](https://github.com/edn-format/edn) or
|
||||
[javascript object notation (JSON)](https://www.json.org/json-en.html). Assumes
|
||||
the first row of a CSV file contains column headers.
|
||||
|
||||
## Installation
|
||||
|
||||
[](https://clojars.org/csv2edn)
|
||||
|
||||
**NOTE**: if the version numbers given below differ from the number in the
|
||||
image above, the image (which is automatically generated) is correct and
|
||||
this file (which is manually maintained) is in error.
|
||||
|
||||
### Leiningen/Boot
|
||||
|
||||
[csv2edn "0.1.4"]
|
||||
[csv2edn "0.1.5"]
|
||||
|
||||
### Clojure CLI/deps.edn
|
||||
|
||||
csv2edn {:mvn/version "0.1.4"}
|
||||
csv2edn {:mvn/version "0.1.5"}
|
||||
|
||||
### Gradle
|
||||
|
||||
compile 'csv2edn:csv2edn:0.1.4'
|
||||
compile 'csv2edn:csv2edn:0.1.5'
|
||||
|
||||
### Maven
|
||||
|
||||
<dependency>
|
||||
<groupId>csv2edn</groupId>
|
||||
<artifactId>csv2edn</artifactId>
|
||||
<version>0.1.4</version>
|
||||
<version>0.1.5</version>
|
||||
</dependency>
|
||||
|
||||
## Usage: as a standalone commandline tool
|
||||
|
||||
To run from the command line:
|
||||
|
||||
$ java -jar csv2edn-0.1.4-standalone.jar [options]
|
||||
$ java -jar csv2edn-0.1.5-standalone.jar [options]
|
||||
|
||||
### Options
|
||||
|
||||
|
@ -51,17 +59,17 @@ Where options are:
|
|||
The simplest possible use is to simply use this in a pipeline:
|
||||
|
||||
$ cat path/to/file.csv |\
|
||||
java -jar csv2edn-0.1.4-standalone.jar > path/to/file.edn
|
||||
java -jar csv2edn-0.1.5-standalone.jar > path/to/file.edn
|
||||
|
||||
Exactly the same behaviour can be achieved by specifying input and output
|
||||
paths:
|
||||
|
||||
$ java -jar csv2edn-0.1.4-standalone.jar \
|
||||
$ java -jar csv2edn-0.1.5-standalone.jar \
|
||||
-i path/to/file.csv -o path/to/file.edn
|
||||
|
||||
or
|
||||
|
||||
$ java -jar csv2edn-0.1.4-standalone.jar \
|
||||
$ java -jar csv2edn-0.1.5-standalone.jar \
|
||||
--input path/to/file.csv --output path/to/file.edn
|
||||
|
||||
## Usage: as a library
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
(defproject csv2edn "0.1.4"
|
||||
(defproject csv2edn "0.1.5"
|
||||
:description "Simple command line utility to convert CSV files to EDN."
|
||||
:url "https://github.com/simon-brooke/csv2edn"
|
||||
:license {:name "GPL-2.0-or-later WITH Classpath-exception-2.0"
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
[clojure.data.json :as json]
|
||||
[clojure.java.io :as io]
|
||||
[clojure.pprint :refer [pprint]]
|
||||
[clojure.string :refer [lower-case]]))
|
||||
[clojure.string :as s]))
|
||||
|
||||
(def ^:dynamic *options*
|
||||
"Defaults for options used in conversion (essentially, `:separator` is `,`,
|
||||
|
@ -33,7 +33,9 @@
|
|||
(csv/read-csv
|
||||
reader
|
||||
:separator (first (str sep)))))
|
||||
headers (map #(keyword (lower-case %)) (first data))
|
||||
headers (map #(keyword
|
||||
(s/replace (s/lower-case %) #"[^a-z0-9]" "-"))
|
||||
(first data))
|
||||
result (map
|
||||
#(zipmap headers (map maybe-read %))
|
||||
(rest data))]
|
||||
|
|
Loading…
Reference in a new issue