Current section

Files

Jump to
phone lib helpers parser.ex
Raw

lib/helpers/parser.ex

defmodule Phone.Helper.Parser do
@moduledoc false
defmacro parser(country, code) do
quote do
def parse(unquote(country), number) when is_bitstring(number) do
parse(unquote(code) <> number)
end
def parse(unquote(country), number) when is_integer(number) do
number = Integer.to_string(number)
parse(unquote(code) <> number)
end
def parse(unquote(country), _) do
parse(unquote(country))
end
end
end
defmacro country_parser do
quote do
parser :ad, "376"
parser :ae, "971"
parser :af, "93"
parser :al, "355"
parser :am, "374"
parser :ao, "244"
parser :ar, "54"
parser :at, "43"
parser :aw, "297"
parser :az, "994"
parser :ba, "387"
parser :bd, "880"
parser :be, "32"
parser :bg, "359"
parser :bh, "973"
parser :bi, "257"
parser :bj, "229"
parser :bn, "673"
parser :bo, "591"
parser :br, "55"
parser :bt, "975"
parser :bw, "267"
parser :by, "375"
parser :bz, "501"
parser :cd, "243"
parser :cf, "236"
parser :cg, "242"
parser :ch, "41"
parser :ci, "225"
parser :ck, "682"
parser :cl, "56"
parser :cm, "237"
parser :cn, "86"
parser :co, "57"
parser :cr, "506"
parser :cu, "53"
parser :cv, "238"
parser :cw, "599"
parser :cy, "357"
parser :cz, "420"
parser :de, "49"
parser :dj, "253"
parser :dk, "45"
parser :dz, "213"
parser :ec, "593"
parser :ee, "372"
parser :eg, "20"
parser :er, "291"
parser :es, "34"
parser :et, "251"
parser :fi, "358"
parser :fj, "679"
parser :fm, "691"
parser :fo, "298"
parser :fr, "33"
parser :ga, "241"
parser :gb, "44"
parser :ge, "995"
parser :gf, "594"
parser :gh, "233"
parser :gi, "350"
parser :gl, "299"
parser :gm, "220"
parser :gn, "224"
parser :gq, "240"
parser :gt, "502"
parser :gw, "245"
parser :gy, "592"
parser :gr, "30"
parser :uk, "30"
parser :hk, "852"
parser :hn, "504"
parser :hr, "385"
parser :ht, "509"
parser :hu, "36"
parser :id, "62"
parser :ie, "353"
parser :il, "972"
parser :in, "91"
parser :io, "246"
parser :iq, "964"
parser :ir, "98"
parser :is, "353"
parser :it, "39"
parser :jo, "962"
parser :jp, "81"
parser :ke, "254"
parser :kg, "996"
parser :kh, "855"
parser :ki, "686"
parser :km, "269"
parser :kp, "850"
parser :kr, "82"
parser :kw, "965"
parser :kz, "7"
parser :la, "856"
parser :lb, "961"
parser :li, "423"
parser :lk, "94"
parser :lr, "231"
parser :ls, "266"
parser :lt, "370"
parser :lu, "352"
parser :lv, "371"
parser :ly, "218"
parser :ma, "212"
parser :mc, "377"
parser :md, "373"
parser :me, "382"
parser :mg, "261"
parser :mh, "692"
parser :mk, "389"
parser :ml, "223"
parser :mm, "95"
parser :mn, "976"
parser :mo, "853"
parser :mq, "596"
parser :mr, "222"
parser :mt, "356"
parser :mu, "230"
parser :mv, "960"
parser :mw, "265"
parser :mx, "52"
parser :my, "60"
parser :mz, "258"
parser :nanp, "1"
parser :ag, "1"
parser :ai, "1"
parser :as, "1"
parser :bb, "1"
parser :bm, "1"
parser :bs, "1"
parser :ca, "1"
parser :dm, "1"
parser :do, "1"
parser :gd, "1"
parser :gu, "1"
parser :jm, "1"
parser :kn, "1"
parser :ky, "1"
parser :lc, "1"
parser :mp, "1"
parser :ms, "1"
parser :pr, "1"
parser :sx, "1"
parser :tc, "1"
parser :tt, "1"
parser :us, "1"
parser :vc, "1"
parser :vg, "1"
parser :vi, "1"
parser :na, "264"
parser :nc, "687"
parser :ne, "227"
parser :ng, "234"
parser :ni, "505"
parser :nl, "31"
parser :no, "47"
parser :np, "977"
parser :nr, "674"
parser :nu, "683"
parser :nz, "64"
parser :om, "968"
parser :pa, "507"
parser :pe, "51"
parser :pf, "689"
parser :pg, "675"
parser :ph, "63"
parser :pk, "92"
parser :pl, "48"
parser :pm, "508"
parser :ps, "970"
parser :pt, "351"
parser :pw, "680"
parser :py, "595"
parser :qa, "974"
parser :ro, "40"
parser :rs, "381"
parser :ru, "7"
parser :rw, "250"
parser :sa, "966"
parser :sb, "677"
parser :sc, "248"
parser :sd, "249"
parser :se, "46"
parser :sg, "65"
parser :sh, "290"
parser :si, "386"
parser :sk, "421"
parser :sl, "232"
parser :sm, "378"
parser :sn, "221"
parser :so, "252"
parser :sr, "597"
parser :ss, "211"
parser :st, "239"
parser :sv, "503"
parser :sy, "963"
parser :sz, "268"
parser :td, "235"
parser :tg, "228"
parser :th, "66"
parser :tj, "992"
parser :tk, "690"
parser :tl, "670"
parser :tm, "993"
parser :tn, "216"
parser :to, "676"
parser :tr, "90"
parser :tv, "688"
parser :tw, "886"
parser :tz, "255"
parser :ua, "380"
parser :ug, "256"
parser :uy, "598"
parser :uz, "998"
parser :ve, "58"
parser :vn, "84"
parser :vu, "678"
parser :wf, "681"
parser :ws, "685"
parser :ye, "967"
parser :za, "27"
parser :zm, "260"
parser :zw, "263"
end
end
end