Roman Volosovskyi 2190fa3be4 fixes #399
Former-commit-id: 50c877eee843a125214c2c8234949ed1bd602fe4
2016-11-02 13:29:43 +02:00

31 lines
953 B
Clojure

(ns status-im.utils.name
(:require [clojure.string :as str]))
(defn too-long? [name max-len]
(> (count name) max-len))
(defn max-name
[name max-len]
(let [names (str/split name " ")]
(first
(reduce (fn [[name done] next-name]
(if done
name
(let [new-name (str/join " " [name next-name])]
(if (too-long? new-name max-len)
(let [new-name' (str name " " (first next-name) ".")]
(if (too-long? new-name' max-len)
[name true]
[new-name' true]))
[new-name]))))
[(first names)]
(rest names)))))
(defn shortened-name [name max-len]
(if (> (count name) max-len)
(let [name' (max-name name max-len)]
(if (too-long? name' max-len)
(str (str/trim (subs name 0 max-len)) "...")
name'))
name))