/
libphonenumber.cljc
54 lines (43 loc) · 1.49 KB
/
libphonenumber.cljc
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
(ns nsfw.libphonenumber
#? (:cljs
(:require [i18n.phonenumbers.PhoneNumberUtil :as pnu]
[i18n.phonenumbers.PhoneNumberFormat :as pnf]))
#? (:clj
(:import [com.google.i18n.phonenumbers
PhoneNumberUtil
PhoneNumberUtil$PhoneNumberFormat])))
(defn get-instance []
#?(:cljs (pnu/getInstance)
:clj (PhoneNumberUtil/getInstance)))
(def E164
#?(:clj PhoneNumberUtil$PhoneNumberFormat/E164
:cljs pnf/E164))
(def INTERNATIONAL
#?(:clj PhoneNumberUtil$PhoneNumberFormat/INTERNATIONAL
:cljs pnf/INTERNATIONAL))
(def NATIONAL
#?(:clj PhoneNumberUtil$PhoneNumberFormat/NATIONAL
:cljs pnf/NATIONAL))
(def RFC3966
#?(:clj PhoneNumberUtil$PhoneNumberFormat/RFC3966
:cljs pnf/RFC3966))
(defn valid? [number-str country]
(let [pu (get-instance)
parsed (.parse pu number-str country)]
(.isValidNumber pu parsed)))
(defn format-e164 [number-str country]
(let [pu (get-instance)
parsed (.parse pu number-str country)]
(.format pu parsed E164)))
(defn format-international [number-str country]
(let [pu (get-instance)
parsed (.parse pu number-str country)]
(.format pu parsed INTERNATIONAL)))
(defn format-national [number-str country]
(let [pu (get-instance)
parsed (.parse pu number-str country)]
(.format pu parsed NATIONAL)))
(defn format-rfc3966 [number-str country]
(let [pu (get-instance)
parsed (.parse pu number-str country)]
(.format pu parsed RFC3966)))