37 lines
1022 B
Clojure
37 lines
1022 B
Clojure
(ns auto-ap.parse.util
|
|
(:require [clj-fuzzy.metrics :as m]
|
|
[clojure.java.shell :as sh]
|
|
[clojure.string :as str]
|
|
[clj-time.format :as f]
|
|
[clj-time.core :as time]))
|
|
|
|
(defmulti parse-value (fn [method _ _]
|
|
method))
|
|
|
|
|
|
(defmethod parse-value :trim-commas
|
|
[_ _ value]
|
|
(str/replace value #"," "")
|
|
)
|
|
|
|
(defmethod parse-value :trim-commas-and-negate
|
|
[_ _ value]
|
|
(let [[_ raw-value] (re-find #"([\d\.]+)"
|
|
(-> value
|
|
(str/replace #"," "")
|
|
(str/replace #"-" "")))]
|
|
(if (or (str/includes? value "-")
|
|
(str/includes? value "CR"))
|
|
(str (- (Double/parseDouble raw-value)))
|
|
(str raw-value))))
|
|
|
|
(defmethod parse-value :clj-time
|
|
[_ format value]
|
|
(time/from-time-zone (f/parse (f/formatter format) value)
|
|
(time/time-zone-for-id "America/Los_Angeles")))
|
|
|
|
(defmethod parse-value nil
|
|
[_ _ value]
|
|
value)
|
|
|