This repository has been archived by the owner on Dec 12, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
helpers.cljs
66 lines (52 loc) · 1.92 KB
/
helpers.cljs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
(ns cljs-web3.helpers
(:require [bignumber.core :as bn]
[camel-snake-kebab.core :as camel-snake]
[camel-snake-kebab.extras :as camel-snake-extras]
[clojure.string :as string]))
(def zero-address "0x0000000000000000000000000000000000000000")
(defn safe-case [case-f]
(fn [x]
(cond-> (subs (name x) 1)
true (string/replace "_" "*")
true case-f
true (string/replace "*" "_")
true (->> (str (first (name x))))
(keyword? x) keyword)))
(def camel-case (safe-case camel-snake/->camelCase))
(def kebab-case (safe-case camel-snake/->kebab-case))
(def js->cljk #(js->clj % :keywordize-keys true))
(def js->cljkk
(comp (partial camel-snake-extras/transform-keys kebab-case) js->cljk))
(def cljkk->js
(comp clj->js (partial camel-snake-extras/transform-keys camel-case)))
(defn method [{:keys [:name :call :params :input-formatter :output-formatter]
:as signature}]
(js->cljkk signature))
(defn event-interface [contract-instance event-key]
(reduce (fn [_ element]
(when (= (:name element) (-> event-key camel-case name))
(reduced element)))
(js->cljk (aget contract-instance "_jsonInterface") )))
(defn return-values->clj [return-values {:keys [:inputs] :as event-interface}]
(reduce (fn [res value]
(let [n (:name value)]
(assoc res (-> n kebab-case keyword) (aget return-values n))))
{}
inputs))
(defn zero-address? [x]
(or (= x zero-address)
(= x "0x")))
(defn empty-address? [x]
(or (empty? x)
(zero-address? x)))
(defn remove-0x [s]
(string/replace s #"0x" ""))
(defn prepend-address-zeros [address]
(let [n (- 42 (count address))]
(if (pos? n)
(->> (subs address 2)
(str (string/join (take n (repeat "0"))))
(str "0x"))
address)))
(defn remove-zero-chars [s]
(string/join (take-while #(< 0 (.charCodeAt % 0)) s)))