(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)