;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS INC

(ns app.util.strings
  (:require
   [cuerdas.core :as str]))

(def ^:const trail-zeros-regex-1 #"\.0+$")
(def ^:const trail-zeros-regex-2 #"(\.\d*[^0])0+$")

(defn format-precision
  "Creates a number with predetermined precision and then removes the trailing 0.
  Examples:
    12.0123, 0 => 12
    12.0123, 1 => 12
    12.0123, 2 => 12.01"
  [num precision]

  (try
    (if (number? num)
      (let [num-str (.toFixed num precision)

            ;; Remove all trailing zeros after the comma 100.00000
            num-str (str/replace num-str trail-zeros-regex-1 "")

            ;; Remove trailing zeros after a decimal number: 0.001|00|
            num-str (if-let [m (re-find trail-zeros-regex-2 num-str)]
                      (str/replace num-str (first m) (second m))
                      num-str)]
        num-str)
      (str num))
    (catch :default _
      (str num))))

(defn matches-search
  [name search-term]
  (if (str/empty? search-term)
    true
    (let [st (str/trim (str/lower search-term))
          nm (str/trim (str/lower name))]
      (str/includes? nm st))))
