Now more or less correctly handles strings which start with a number.

This commit is contained in:
Simon Brooke 2020-01-27 15:59:17 +00:00
parent 837c43ac32
commit a178270a75
2 changed files with 16 additions and 10 deletions

View file

@ -16,29 +16,29 @@ this file (which is manually maintained) is in error.
### Leiningen/Boot
[csv2edn "0.1.5"]
[csv2edn "0.1.6"]
### Clojure CLI/deps.edn
csv2edn {:mvn/version "0.1.5"}
csv2edn {:mvn/version "0.1.6"}
### Gradle
compile 'csv2edn:csv2edn:0.1.5'
compile 'csv2edn:csv2edn:0.1.6'
### Maven
<dependency>
<groupId>csv2edn</groupId>
<artifactId>csv2edn</artifactId>
<version>0.1.5</version>
<version>0.1.6</version>
</dependency>
## Usage: as a standalone commandline tool
To run from the command line:
$ java -jar csv2edn-0.1.5-standalone.jar [options]
$ java -jar csv2edn-0.1.6-standalone.jar [options]
### Options
@ -59,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.5-standalone.jar > path/to/file.edn
java -jar csv2edn-0.1.6-standalone.jar > path/to/file.edn
Exactly the same behaviour can be achieved by specifying input and output
paths:
$ java -jar csv2edn-0.1.5-standalone.jar \
$ java -jar csv2edn-0.1.6-standalone.jar \
-i path/to/file.csv -o path/to/file.edn
or
$ java -jar csv2edn-0.1.5-standalone.jar \
$ java -jar csv2edn-0.1.6-standalone.jar \
--input path/to/file.csv --output path/to/file.edn
## Usage: as a library

View file

@ -14,10 +14,16 @@
(defn maybe-read
"If a string represents an integer or real, we'd really like to have that
integer or real in our data rather than a string representation of it."
;; TODO: this is actually quite difficult and the current solution won't
;; correctly handle numbers in scientific notation, ratios, or imaginary
;; numbers.
[^String s]
(try
(let [v (read-string s)]
(if (number? v) v s))
(if
(re-matches #"^ *[+-]?[0-9]*\.?[0-9]*" s)
(let [v (read-string s)]
(if (number? v) v s))
s)
(catch Exception _ s)))
(defn csv->edn