shinmuro.util

camel->dash

(camel->dash s)
dash->camel の逆バージョン。

const->key

(const->key s & [prefix])
 FOO_BAR -> :foo-bar にする。prefix があれば :prefix-foo-bar にする。

count-if

(count-if pred coll)
各要素が述語関数 pred を満たす数をカウントする。

dash->camel

(dash->camel s & opts)
lisp ライクな命名をキャメルケース化する。オプションで :lcc を指定すれば先頭のみ小文字にする。
[例]
(dash->camel "one-two-three")
;=> "OneTwoThree"

(dash->camel "one-two-three" :lcc)
;=> "oneTwoThree"

domap

macro

(domap seq-exprs & body)
map 版 doseq。複数のシーケンスをバインドさせた時、全ての組み合わせを行うのではなく、
map と同様に先頭から順に処理し、一番短い所で終了する。残りのアイテムは無視する。

intable?

(intable? n)
数値 n が小数部を含まなければ true を返す。

invoke-method

(invoke-method target meth & args)
clojure.lang.Reflector/invokeInstanceMethod の Clojure 関数版。
例外も少し分かりやすくしているつもり。

map->vec

(map->vec m keyseq)
マップエントリを keyseq で指定した順のベクタに変換する。

mapall

(comp doall map) と同じ。map のように複数シーケンスを副作用を伴いながら
並列で進めたい場合に使う。doseq も複数シーケンスは対応しているが
シーケンス数 * 各要素数で進む為用意。当然 lazy-seq ではなくなる。

戻り値は map の結果シーケンスを返す。

maprun

(comp dorun map) と同じ。map のように複数シーケンスを副作用を伴いながら
並列で進めたい場合に使う。doseq も複数シーケンスは対応しているが
シーケンス数 * 各要素数で進む為用意。当然 lazy-seq ではなくなる。

戻り値は dorun により常に nil を返す。

replace-val

(replace-val m keyseq v)
map データで keyseq 中に指定されている key の値を v にする

tz-millis

(tz-millis)
user.timezone システムプロパティで取得できる時差をミリ秒で返す