0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-01-24 23:49:45 -05:00

Add index-of and classnames util functions.

This commit is contained in:
Andrey Antukh 2016-02-01 19:47:44 +02:00
parent 774c395a7f
commit 45caf5cdda

View file

@ -1,6 +1,7 @@
(ns uxbox.util.data
"A collection of data transformation utils."
(:require [cljs.reader :as r]))
(:require [cljs.reader :as r]
[cuerdas.core :as str]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Data structure manipulation
@ -29,6 +30,14 @@
(persistent!
(reduce #(dissoc! %1 %2) (transient data) keys)))
(defn index-of
"Return the first index when appears the `v` value
in the `coll` collection."
[coll v]
(first (keep-indexed (fn [idx x]
(when (= v x) idx))
coll)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Numbers Parsing
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -58,3 +67,17 @@
(if (or (not v) (nan? v))
default
v))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Other
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn classnames
[& params]
{:pre [(even? (count params))]}
(str/join " " (reduce (fn [acc [k v]]
(if (true? v)
(conj acc (name k))
acc))
[]
(partition 2 params))))