addressing 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +7 -0
- data/LICENSE +21 -0
- data/README.md +207 -0
- data/data/address_formats.dump +0 -0
- data/data/address_formats.json +206 -0
- data/data/country/af.json +258 -0
- data/data/country/am.json +258 -0
- data/data/country/ar-LY.json +258 -0
- data/data/country/ar-SA.json +258 -0
- data/data/country/ar.json +258 -0
- data/data/country/as.json +258 -0
- data/data/country/az.json +258 -0
- data/data/country/be.json +258 -0
- data/data/country/bg.json +258 -0
- data/data/country/bn-IN.json +258 -0
- data/data/country/bn.json +258 -0
- data/data/country/bs.json +258 -0
- data/data/country/ca.json +258 -0
- data/data/country/cs.json +258 -0
- data/data/country/cy.json +258 -0
- data/data/country/da.json +258 -0
- data/data/country/de-AT.json +258 -0
- data/data/country/de-CH.json +258 -0
- data/data/country/de.json +258 -0
- data/data/country/el.json +258 -0
- data/data/country/en-001.json +258 -0
- data/data/country/en-CA.json +258 -0
- data/data/country/en-GB.json +258 -0
- data/data/country/en.json +258 -0
- data/data/country/es-419.json +258 -0
- data/data/country/es-AR.json +258 -0
- data/data/country/es-BO.json +258 -0
- data/data/country/es-CL.json +258 -0
- data/data/country/es-CO.json +258 -0
- data/data/country/es-CR.json +258 -0
- data/data/country/es-DO.json +258 -0
- data/data/country/es-EC.json +258 -0
- data/data/country/es-GT.json +258 -0
- data/data/country/es-HN.json +258 -0
- data/data/country/es-MX.json +258 -0
- data/data/country/es-NI.json +258 -0
- data/data/country/es-PA.json +258 -0
- data/data/country/es-PE.json +258 -0
- data/data/country/es-PR.json +258 -0
- data/data/country/es-PY.json +258 -0
- data/data/country/es-SV.json +258 -0
- data/data/country/es-US.json +258 -0
- data/data/country/es-VE.json +258 -0
- data/data/country/es.json +258 -0
- data/data/country/et.json +258 -0
- data/data/country/eu.json +258 -0
- data/data/country/fa-AF.json +258 -0
- data/data/country/fa.json +258 -0
- data/data/country/fi.json +258 -0
- data/data/country/fil.json +258 -0
- data/data/country/fr-BE.json +258 -0
- data/data/country/fr-CA.json +258 -0
- data/data/country/fr.json +258 -0
- data/data/country/ga.json +258 -0
- data/data/country/gl.json +258 -0
- data/data/country/gu.json +258 -0
- data/data/country/he.json +258 -0
- data/data/country/hi.json +258 -0
- data/data/country/hr.json +258 -0
- data/data/country/hu.json +258 -0
- data/data/country/hy.json +258 -0
- data/data/country/id.json +258 -0
- data/data/country/is.json +258 -0
- data/data/country/it.json +258 -0
- data/data/country/ja.json +258 -0
- data/data/country/ka.json +258 -0
- data/data/country/kk.json +258 -0
- data/data/country/km.json +258 -0
- data/data/country/ko-KP.json +258 -0
- data/data/country/ko.json +258 -0
- data/data/country/ky.json +258 -0
- data/data/country/lo.json +258 -0
- data/data/country/lt.json +258 -0
- data/data/country/lv.json +258 -0
- data/data/country/mk.json +258 -0
- data/data/country/ml.json +258 -0
- data/data/country/mn.json +258 -0
- data/data/country/mr.json +258 -0
- data/data/country/ms.json +258 -0
- data/data/country/my.json +258 -0
- data/data/country/ne.json +258 -0
- data/data/country/nl.json +258 -0
- data/data/country/nn.json +258 -0
- data/data/country/no.json +258 -0
- data/data/country/or.json +258 -0
- data/data/country/pa.json +258 -0
- data/data/country/pl.json +258 -0
- data/data/country/ps-PK.json +258 -0
- data/data/country/ps.json +258 -0
- data/data/country/pt-PT.json +258 -0
- data/data/country/pt.json +258 -0
- data/data/country/ro-MD.json +258 -0
- data/data/country/ro.json +258 -0
- data/data/country/ru-UA.json +258 -0
- data/data/country/ru.json +258 -0
- data/data/country/sd.json +258 -0
- data/data/country/si.json +258 -0
- data/data/country/sk.json +258 -0
- data/data/country/sl.json +258 -0
- data/data/country/so.json +258 -0
- data/data/country/sq.json +258 -0
- data/data/country/sr-Cyrl-BA.json +258 -0
- data/data/country/sr-Cyrl-ME.json +258 -0
- data/data/country/sr-Cyrl-XK.json +258 -0
- data/data/country/sr-Latn-BA.json +258 -0
- data/data/country/sr-Latn-ME.json +258 -0
- data/data/country/sr-Latn-XK.json +258 -0
- data/data/country/sr-Latn.json +258 -0
- data/data/country/sr.json +258 -0
- data/data/country/sv.json +258 -0
- data/data/country/sw-CD.json +258 -0
- data/data/country/sw-KE.json +258 -0
- data/data/country/sw.json +258 -0
- data/data/country/ta.json +258 -0
- data/data/country/te.json +258 -0
- data/data/country/th.json +258 -0
- data/data/country/tk.json +258 -0
- data/data/country/tr.json +258 -0
- data/data/country/uk.json +258 -0
- data/data/country/ur-IN.json +258 -0
- data/data/country/ur.json +258 -0
- data/data/country/uz.json +258 -0
- data/data/country/vi.json +258 -0
- data/data/country/yue.json +258 -0
- data/data/country/zh-Hant-HK.json +258 -0
- data/data/country/zh-Hant.json +258 -0
- data/data/country/zh.json +258 -0
- data/data/country/zu.json +258 -0
- data/data/library_customizations.rb +258 -0
- data/data/subdivision/AD.json +34 -0
- data/data/subdivision/AE.json +37 -0
- data/data/subdivision/AM.json +61 -0
- data/data/subdivision/AR.json +101 -0
- data/data/subdivision/AU.json +49 -0
- data/data/subdivision/BR-0f249e4e5aa1c61aec7276f8653a07588c89789c.json +165 -0
- data/data/subdivision/BR-15f51444be75bc88e935c57ef2ee7477dc73a64e.json +287 -0
- data/data/subdivision/BR-2861496649211b184ef67d9c29f4a57013c4825b.json +39 -0
- data/data/subdivision/BR-333132be138ba9ace941111a0f174248952df7a1.json +11 -0
- data/data/subdivision/BR-39a0f31b2a7446e0041c02281ac2fd664aeae8e6.json +297 -0
- data/data/subdivision/BR-3ddbb55116373e04a0b9c15f93eb1706e4a87bee.json +379 -0
- data/data/subdivision/BR-4694c7455bba02be54aba2a150401fad5caf981e.json +341 -0
- data/data/subdivision/BR-54561fd891ee8d3bc3718283afdce5d24a9fb9d4.json +1003 -0
- data/data/subdivision/BR-55af20415ead0ddd417f37fa91a4c767b749ee34.json +807 -0
- data/data/subdivision/BR-59aa962f7269a10c4395e01495c04a928240cb5b.json +599 -0
- data/data/subdivision/BR-5dce41c3c1fccd0c04d39f21a0cbde80a6071e2b.json +159 -0
- data/data/subdivision/BR-7707f6812879867a3c219186b9129575ea2ab581.json +1299 -0
- data/data/subdivision/BR-7f4f5c4e995422d3e34fed178c901e3e8d8084ba.json +195 -0
- data/data/subdivision/BR-80d305c58f97edfae92a3627f5a66d9bef4d8d46.json +133 -0
- data/data/subdivision/BR-83125cc87a7b47bc7f6d49185ceb9585f409bead.json +443 -0
- data/data/subdivision/BR-86282ad0a8acc92fe00462f240dfe652af4cb3dd.json +113 -0
- data/data/subdivision/BR-9debabbaa01a190fabe8324c5e6e2f2808052099.json +167 -0
- data/data/subdivision/BR-a092b2d4c9d52807932bfedae96b01210db7e06b.json +455 -0
- data/data/subdivision/BR-b1fb3bec6fdb22e19a94fe4c6c4481ccba2ee9f0.json +53 -0
- data/data/subdivision/BR-b77da9422330fead9ab9ec32fbbd59bb9d5fc19a.json +377 -0
- data/data/subdivision/BR-bc5af774c819dc8b91c6b244583727dac105439a.json +41 -0
- data/data/subdivision/BR-bd62be75218df6c5083b334231b86e13ce40799b.json +1715 -0
- data/data/subdivision/BR-c3c2fa56598ad851b7830cef382142780461bca4.json +291 -0
- data/data/subdivision/BR-cf681cfbf3c282528fea28596536f592630842e7.json +213 -0
- data/data/subdivision/BR-eb28d7ef234301a3371720ea0d790df1a9c4363a.json +843 -0
- data/data/subdivision/BR-f63f96efcf4dca20e932779360ef17b3a7941627.json +501 -0
- data/data/subdivision/BR-fa7ff6fb00a7ace8d98cf880a492dc6c5ffc8ca7.json +455 -0
- data/data/subdivision/BR.json +167 -0
- data/data/subdivision/BS.json +60 -0
- data/data/subdivision/CA.json +97 -0
- data/data/subdivision/CL-2375064103a9f46e0fb6858080ebec52f8c8c746.json +27 -0
- data/data/subdivision/CL-23b86367f99214ec3b1d84a217eb18dccb00ce4a.json +69 -0
- data/data/subdivision/CL-27154ea1dc813b535b404f82bcb5de951c091cb1.json +31 -0
- data/data/subdivision/CL-384caed2e336cf9dc7977622449bec8c973f5113.json +117 -0
- data/data/subdivision/CL-68629acbb019aebf2539cebb7cdc11721b4e2968.json +75 -0
- data/data/subdivision/CL-6ec58c9b08426a73c465ba50893e4c631cae8caf.json +33 -0
- data/data/subdivision/CL-99d0b34186f5c50aedcf4d82128ceb9a9cef3f1d.json +69 -0
- data/data/subdivision/CL-b0be7d6d5d8472c8da0739f22df0957363f5afdd.json +29 -0
- data/data/subdivision/CL-b4f66ef54e6596c6e6a3d4f2497f806ed2b706df.json +113 -0
- data/data/subdivision/CL-c1b187dd6772075e881096904bbd2bbbe105eec4.json +17 -0
- data/data/subdivision/CL-c38db4e0ac47f0048e177dc1ac6422249a16dc84.json +27 -0
- data/data/subdivision/CL-cd80ff79e3d75dde477e9d71fdbbadcf836a9a43.json +39 -0
- data/data/subdivision/CL-ea459b55d7c9115d8e37125dd1f1ce5049a04125.json +73 -0
- data/data/subdivision/CL-ed29e5a43f68508c0bba32bb4319c0ff277bc0b0.json +85 -0
- data/data/subdivision/CL-f3659d4323805614f258e1b8ab6359e862da9d6a.json +23 -0
- data/data/subdivision/CL.json +72 -0
- data/data/subdivision/CN--0094a4bf42b994317c4789bffc5a50e3831f2fcf.json +20 -0
- data/data/subdivision/CN--00c8404b1c7cc9c267b272630415386deb6694c8.json +29 -0
- data/data/subdivision/CN--0141839c2522be217fb97217d3e60aa1067afb95.json +29 -0
- data/data/subdivision/CN--02b8690e3702ebacd9eafd46893604954786c18c.json +38 -0
- data/data/subdivision/CN--03bb55e7f9d978847929c5acf302367cb928399d.json +25 -0
- data/data/subdivision/CN--04301757c1a5a9e8fd2155bc60b6bd51cb58885d.json +35 -0
- data/data/subdivision/CN--04ab4fc82253e371c638c02adbd39e5d7dcbb5c3.json +77 -0
- data/data/subdivision/CN--04f2bf92fa38c06607ad8a68fc36bdc1107ea6b1.json +51 -0
- data/data/subdivision/CN--059b25c41e744ead077e8e6fffaa958ac83b7ca8.json +23 -0
- data/data/subdivision/CN--05bc3c634741bb1fed1289f0f6b96d7493086650.json +36 -0
- data/data/subdivision/CN--061465a81c2829e14f46db63c2c3e54d29347be5.json +48 -0
- data/data/subdivision/CN--0640995dc18a2f5e8ba8d94a5139dde7890e711b.json +29 -0
- data/data/subdivision/CN--082be6ed7ff0dbf21ecdd5a2359bc8464376e62b.json +35 -0
- data/data/subdivision/CN--089f672246f139fa7a2c56edff9b2e7ea491f097.json +44 -0
- data/data/subdivision/CN--08b877902c1c78fb0ee038644031b56de6970241.json +62 -0
- data/data/subdivision/CN--08bd5baf2a47c32aa81846e0a2af16fb2c75f37c.json +23 -0
- data/data/subdivision/CN--099bf6112b29ba98001ce631c502ef6062005f69.json +68 -0
- data/data/subdivision/CN--09a3c2b95175552e1de6c07a66123e2e96e9efb7.json +35 -0
- data/data/subdivision/CN--0a79ac02dee314504422837749924c8bda786937.json +41 -0
- data/data/subdivision/CN--0c2d2f26d72cc81cf3054ed93cb4813299d07437.json +52 -0
- data/data/subdivision/CN--0e49006f397c30ddcad1abfde0c948a1b03c64fb.json +35 -0
- data/data/subdivision/CN--0e4a4f38fd57575a8796b651a6293c9efd5d4ec4.json +41 -0
- data/data/subdivision/CN--0f8ef4949f51186a9d2e7736bbc1316690861e3e.json +38 -0
- data/data/subdivision/CN--0f96cef73e6d6d145d77067f14ac74db1550778e.json +29 -0
- data/data/subdivision/CN--0fa4f1df8c86bb89afb2cce0d75261d7ebe555b0.json +29 -0
- data/data/subdivision/CN--10a21b7e26f13b21fcfb13dfd422d4a28904ac6d.json +45 -0
- data/data/subdivision/CN--1110fd8add4c9bc4f1c6e46dc6b3c539b4ad296b.json +20 -0
- data/data/subdivision/CN--1136420abc8a5acf5962675ee79b4127064c15ed.json +44 -0
- data/data/subdivision/CN--1192145595cbc8f953efe06bb9bbd8b7827d4a22.json +20 -0
- data/data/subdivision/CN--11aba946d768d6cc4c0d9f843509b0bc848e8525.json +62 -0
- data/data/subdivision/CN--124be3f89684d48e0df9061dc0bc4f46073a5c75.json +53 -0
- data/data/subdivision/CN--12bb025295384f77cb885c039dba9d3d2480b208.json +41 -0
- data/data/subdivision/CN--130746ff78de9099819a4084b579a27cf700b879.json +59 -0
- data/data/subdivision/CN--14156097183b0d7969d17a53a40a49cbcfafa4e5.json +35 -0
- data/data/subdivision/CN--14c99047fd04f4745f38c90a969a3a8843718203.json +65 -0
- data/data/subdivision/CN--18a7eddbbdee2e1e7f356d470666e4cae4534d8c.json +23 -0
- data/data/subdivision/CN--1981b82335758ff022e7fdae756962041dab121c.json +21 -0
- data/data/subdivision/CN--1a34d4420753493a48562340830e8c247c635320.json +38 -0
- data/data/subdivision/CN--1a6207c310e6f625139dfcded4b88ebdaf3cd686.json +26 -0
- data/data/subdivision/CN--1bd2927be4ad84c6b1bdc661b5dd81e17e2898ad.json +23 -0
- data/data/subdivision/CN--1d3987ca31af95891e2444332b68d2aea0958a37.json +29 -0
- data/data/subdivision/CN--1d65e7f7a09d9222f5c1500bada1ffed49efbcad.json +38 -0
- data/data/subdivision/CN--1d7e9bc4a9b65cbc1928216a55eb8438d57e1527.json +26 -0
- data/data/subdivision/CN--1d93fb3d5676b2a3086dc3d2456d151021c33553.json +32 -0
- data/data/subdivision/CN--1da58d09e9e46c416974a0a64e40e7e81742f5dd.json +50 -0
- data/data/subdivision/CN--1f23811fb8809cad904dbf8b814346f963ce2cdb.json +59 -0
- data/data/subdivision/CN--1f31322de7229c70a28dab6f29e94fb72307a4ba.json +32 -0
- data/data/subdivision/CN--21030f7e62d55f3af92b31c81628b5c8800d6f08.json +35 -0
- data/data/subdivision/CN--21e2cd28d8b77a372b1a833f3d8beeb1fb23345f.json +29 -0
- data/data/subdivision/CN--22ede87960e91b7c940186cf3a9e847eeb2f6cba.json +44 -0
- data/data/subdivision/CN--2376d05b551f6f9e3d19b604548a966aa2d7ad24.json +26 -0
- data/data/subdivision/CN--23f6d99e58561ed7c58fa7afe1151f33584df969.json +42 -0
- data/data/subdivision/CN--2455d5b4d2f2667b823210bc2858753d1d39be63.json +26 -0
- data/data/subdivision/CN--25f9e4b36c025d1a2491edb871f9346a9612451b.json +32 -0
- data/data/subdivision/CN--26fca9dbe199db904b9995bb74a29eaba4d9c4d8.json +44 -0
- data/data/subdivision/CN--29d012e50b88bcb11a14c4e226eed642def8be8a.json +38 -0
- data/data/subdivision/CN--2a058f9b65d57ec7454ad63308c2dded4f87c8a6.json +38 -0
- data/data/subdivision/CN--2a16dd91209df248a14f9d4152b1eb2e5c34bc2f.json +21 -0
- data/data/subdivision/CN--2a72206eddcaa4f2c2c0d2b1e2a1cae5e6ebe30f.json +28 -0
- data/data/subdivision/CN--2a96f0608240b8fb64b821e338d00600a2851e06.json +75 -0
- data/data/subdivision/CN--2aa488e0025fa499675541e292b004a3e400b441.json +26 -0
- data/data/subdivision/CN--2af9300177f348452a0e0229e6cf115b0c74b25c.json +50 -0
- data/data/subdivision/CN--2b0d6cd576576a9db8004cf696e052f0ea8dd996.json +53 -0
- data/data/subdivision/CN--2b64f8dfb762ac52cd97c09ff7438c193d72d5fb.json +23 -0
- data/data/subdivision/CN--2bfa3d3ad85cae8bed50290d3690f18eb6160dda.json +20 -0
- data/data/subdivision/CN--2cdc847652abe01343ddd21ac1cfa42838e924f8.json +63 -0
- data/data/subdivision/CN--2dcb7317c4b5235002a6dc5ef140f38b15a73b66.json +33 -0
- data/data/subdivision/CN--2f68ff08a33fc8f341422dd8982a5b1cf3ef9451.json +35 -0
- data/data/subdivision/CN--30464eed0dd2f64582d0240d17bb37e9f6a1528b.json +50 -0
- data/data/subdivision/CN--309f3905accc36b057317b3cdaa8592ed1a05cbb.json +41 -0
- data/data/subdivision/CN--31328e22a74f543b38238a837bd6cf7b91cb26d5.json +32 -0
- data/data/subdivision/CN--335254504e55b2c6eb11ea58c6b3ac1fc79ae8e9.json +44 -0
- data/data/subdivision/CN--3361ef8c5758ed162e652155b3e60488384235bd.json +68 -0
- data/data/subdivision/CN--3475b72d5a1a45cb1b336ba36e0fb4a4188e77b1.json +47 -0
- data/data/subdivision/CN--34815ef624f8f7f8ed280c518f8abc0cd5085f8b.json +26 -0
- data/data/subdivision/CN--34c2a09959db1a58d8719e1558b583fd44f9c3ff.json +49 -0
- data/data/subdivision/CN--35e08f1ec114bb5e0bc221e52983fb9ed64a678e.json +41 -0
- data/data/subdivision/CN--35ef9e44b083469725cf99fe9e03daf194fd83b7.json +29 -0
- data/data/subdivision/CN--35f0402d2b4c9f6b9f1cdeb847456fb3cdc128ea.json +32 -0
- data/data/subdivision/CN--37a0751826de03e490fed93f0dcb4d4dbc8f4535.json +23 -0
- data/data/subdivision/CN--38609bce2624c172442a48dc545f630d0b1b7e0b.json +83 -0
- data/data/subdivision/CN--397199754ca34197f659f24ef822d1cda2a6d1f1.json +38 -0
- data/data/subdivision/CN--3a764591c105eafe27476b72cd32a369c4453827.json +37 -0
- data/data/subdivision/CN--3aa5b979c64ed5385a9104e15281d33747e6abb5.json +41 -0
- data/data/subdivision/CN--3ac3bcbfae176b8d7b19e39c4aa52270cf53b633.json +23 -0
- data/data/subdivision/CN--3b792258d794ddaedaabd43fe91423effabf8bcd.json +38 -0
- data/data/subdivision/CN--3ca5bb9a176c37441761f6ae82a50c114b3e7492.json +29 -0
- data/data/subdivision/CN--3d1c4c9970402000357586ca9560a7ab13c78b24.json +32 -0
- data/data/subdivision/CN--3d6c120388445f58c14fc0269e7807cf317e6fe4.json +59 -0
- data/data/subdivision/CN--3da033a915ffa40dfcad8721035b4e7cba412ab4.json +26 -0
- data/data/subdivision/CN--3e02294a4ca7ce0fb40f32dd90ccd36003b0d6ed.json +46 -0
- data/data/subdivision/CN--3e5a76f57ae64ea49e597d0ff2b9aa6f0e5c52b9.json +35 -0
- data/data/subdivision/CN--3f2e5bbb525fabd626530f00f00ceaaf0d44ab24.json +50 -0
- data/data/subdivision/CN--3f594295a01b2bab44c3bd43bd8944f5f89276bc.json +32 -0
- data/data/subdivision/CN--3fba0b6c2169fe7d79b9a48a555ff85eb0c8c971.json +50 -0
- data/data/subdivision/CN--401d6e0d549ca530e06e77e4a858469fdb7fa77e.json +33 -0
- data/data/subdivision/CN--403d50ed84f01f90e452b8b630089fee83b19d9c.json +33 -0
- data/data/subdivision/CN--411d128ef12096f1c1f7a6b93b6f468607caaa64.json +38 -0
- data/data/subdivision/CN--415db4bde40e7f666d9685fc7cf56ac4515882e9.json +44 -0
- data/data/subdivision/CN--421cd215a2c93a1bdbece7cf4ca9cfb742815d16.json +38 -0
- data/data/subdivision/CN--4221b4a55947adec6cde7b24eab3e4430f0c0dff.json +32 -0
- data/data/subdivision/CN--4301e8e4807cec384e3b0847d5f08ffd16cba804.json +26 -0
- data/data/subdivision/CN--43da935cb0764ca7b8e3abf53adafbf7d3ba5d0d.json +26 -0
- data/data/subdivision/CN--43e284e2d1a13e4736663578306300c369507d05.json +53 -0
- data/data/subdivision/CN--457c32746297260b730fed4c7342a625e595d90b.json +35 -0
- data/data/subdivision/CN--474c27444d4e7e047d5b1c002e08fbf854bfb1e2.json +39 -0
- data/data/subdivision/CN--4894d4f187cc75f7b048914fc0fa0408e18e8bad.json +41 -0
- data/data/subdivision/CN--48dfbb494566833433402f6681fc8edb9e97d621.json +30 -0
- data/data/subdivision/CN--48e6c18452b04afaeaf7fe1d39bf71ecd968979f.json +23 -0
- data/data/subdivision/CN--49d56719f449b4dc565551a312a851c49d8aa6f8.json +44 -0
- data/data/subdivision/CN--4a4135244280bb0b28655cceda1fb26b02344226.json +47 -0
- data/data/subdivision/CN--4a760750d6ba36a5185f0d9c865c1c806b371d8d.json +47 -0
- data/data/subdivision/CN--4b5062d8cc7527a3faac9f4be413439664776f51.json +35 -0
- data/data/subdivision/CN--4c6bb4ad86b1a75921ffaf43bfaa9b9bc5f6e76b.json +56 -0
- data/data/subdivision/CN--4c9bb44769c5e16ac2b655056d607a9fc1cfc10d.json +35 -0
- data/data/subdivision/CN--4cec45f122f37294d6312818891ea4b1ce5b0a2d.json +50 -0
- data/data/subdivision/CN--4d253388e910b8d048cc977f6a64883da3d18fd5.json +24 -0
- data/data/subdivision/CN--4d88c62f8d41ab978f1b24d1359c60aad81c0dab.json +47 -0
- data/data/subdivision/CN--4ff5a213339c832c49df331f42bdcd876b46e343.json +32 -0
- data/data/subdivision/CN--513d00b0dcfcd1432b2b0832732fddb27580f634.json +32 -0
- data/data/subdivision/CN--517b6a0f5b6132a978b397fe51923c552c2f470c.json +24 -0
- data/data/subdivision/CN--51dd1bd7fd60796f0872823cedb9ad0e447dd068.json +38 -0
- data/data/subdivision/CN--524476ed313805a66720556fa7d78c6c61f6d426.json +26 -0
- data/data/subdivision/CN--52bb56e3c029ebb0eb83012e5c800ce2c3aae785.json +26 -0
- data/data/subdivision/CN--54b7aa7ce8046309b96bceb164082e2b8863308b.json +26 -0
- data/data/subdivision/CN--5572cd205be71575fe0f17052bbad8dcba96b312.json +29 -0
- data/data/subdivision/CN--558e1e1551b741489268b5ec6a6f88cf3f387f2b.json +29 -0
- data/data/subdivision/CN--5701da5f84c429aa130f4e2feff9239d1db6ba74.json +33 -0
- data/data/subdivision/CN--5774a3ab53f99eff7f6b8d150f659373677b6e0a.json +26 -0
- data/data/subdivision/CN--58d69993e5489a64a737af6835b2deeb70dbee7d.json +63 -0
- data/data/subdivision/CN--5928dee89c12bbea67ea7a9202d3ab20409f16a9.json +29 -0
- data/data/subdivision/CN--5a28c917cfdf3cc4874eb63616de92ae10036237.json +26 -0
- data/data/subdivision/CN--5af592b0c13863e99631289d3a8052155d065899.json +29 -0
- data/data/subdivision/CN--5b59b3818879da9b53c001a3eeda3825e766c785.json +47 -0
- data/data/subdivision/CN--5bc5499509b8ed91b95a8de287a53408e25a2de9.json +35 -0
- data/data/subdivision/CN--5ce827c975b80117e3e9932b9f8dc61f8d0c6378.json +26 -0
- data/data/subdivision/CN--5f93948578d2d7dc36b71bb73af911e1e42a83af.json +35 -0
- data/data/subdivision/CN--5fd9f5a03be0fd126aeb844e8695613521b54b6d.json +63 -0
- data/data/subdivision/CN--5ff0deae8d2880bc14ebc84663c30b819b42add5.json +50 -0
- data/data/subdivision/CN--6075a6ab31615b63d9b770b538662e702b925372.json +42 -0
- data/data/subdivision/CN--60e22efc66abaf85562ae9425da0d797cc0a19de.json +23 -0
- data/data/subdivision/CN--6158cc34d1bfddb3b6e2c02c5161725ead8341e8.json +23 -0
- data/data/subdivision/CN--6179eac9bc18f10b4c901425be42042f17c56e94.json +41 -0
- data/data/subdivision/CN--61b8900eabc37aad1f2c67f7d36939a788963dc1.json +26 -0
- data/data/subdivision/CN--642fbab5a6e0fc489fbf83d54c3789db9d21e52a.json +52 -0
- data/data/subdivision/CN--648cc643bb8eb3e3dfa89b19353fd9fb358a0da4.json +38 -0
- data/data/subdivision/CN--64d2df669d6e782cd901e4ade4c60e1add6d9491.json +24 -0
- data/data/subdivision/CN--64fd027bc7bcd325b97c2dd395f8dccb9e6faf85.json +44 -0
- data/data/subdivision/CN--66921df3f775e16cbbab487a24d19464c0ea7122.json +31 -0
- data/data/subdivision/CN--68aa195ad83f0be79ef72d8679a88093deded0d1.json +53 -0
- data/data/subdivision/CN--6a98099cf363034a3777cd47ba473b6f1796c10f.json +26 -0
- data/data/subdivision/CN--6b893b69b2fd74c61e1287966aa720e97467b008.json +32 -0
- data/data/subdivision/CN--6d5737467a13a3f82fcb2632e633962401beaa12.json +23 -0
- data/data/subdivision/CN--6d74d68057a72aef125a7f1d34c0a396f9c62619.json +60 -0
- data/data/subdivision/CN--6dde2c821dbaa041c8a29acb7db78373f2e8f834.json +47 -0
- data/data/subdivision/CN--6f273c2495dade1613ffb5ec0c48d2c5aee768b1.json +47 -0
- data/data/subdivision/CN--6f4dca5b57692c8f6122104deb528dcb7fc53ada.json +32 -0
- data/data/subdivision/CN--6f77fbeabe9f2dcc72cb2bcc8500717c3c68627e.json +35 -0
- data/data/subdivision/CN--705f4b55fb8564f0d62d2a27abd20950e3effd85.json +23 -0
- data/data/subdivision/CN--70a92b01e2fab0b7a570098c17d8f6009da13618.json +53 -0
- data/data/subdivision/CN--7188bf7f55c5bab6fa9310f1b239c667a14570d1.json +38 -0
- data/data/subdivision/CN--747e49581284b1ea78eb350d50289fb0079636d1.json +41 -0
- data/data/subdivision/CN--754a8d4b71b737e53f7747a2766dfd65a9421ae6.json +23 -0
- data/data/subdivision/CN--75c74b3110b039b4a10deea5b0a239915d9f0c6e.json +29 -0
- data/data/subdivision/CN--763bede8d119ccfd370a7ee3e31313f242183c5c.json +38 -0
- data/data/subdivision/CN--7690a08222400a380a1fc828214ae9c819186035.json +91 -0
- data/data/subdivision/CN--76d2d643bfe2c14910f461e180970cf6a2967b79.json +38 -0
- data/data/subdivision/CN--76ee1ad097c468c519fa985d0de294ffa9b371a6.json +38 -0
- data/data/subdivision/CN--7807961339d0ca1aa271c3b572682059c6c7031d.json +35 -0
- data/data/subdivision/CN--7897bae52d0ffb1addd6470b8ad0f66561dd0b0b.json +30 -0
- data/data/subdivision/CN--7953011e8bdefb9c67ca0caf10ae9231a44204ad.json +30 -0
- data/data/subdivision/CN--79864b979e0078ad189b6e182766340e6d8791ac.json +41 -0
- data/data/subdivision/CN--7ade906923166ef1fbabc7cea258de9163cb022e.json +34 -0
- data/data/subdivision/CN--7b4a655db8fbff89e3cb5b0e92f3fe4dc110c9a8.json +41 -0
- data/data/subdivision/CN--7c1fdc45d86acdd036daf3bda632a924ea613077.json +32 -0
- data/data/subdivision/CN--7c83729bec5e4f5547c102d1fbe2e9e304cff91c.json +127 -0
- data/data/subdivision/CN--7efe9d3ea01d7febe749233ad1139a92a9b9e2d9.json +23 -0
- data/data/subdivision/CN--7f0a8e9106072e26adbe4e7cac5095e0ced013c6.json +32 -0
- data/data/subdivision/CN--7f749843297198799b2cfe43f79e267e072fb7ce.json +50 -0
- data/data/subdivision/CN--7fc035bc504edb74cca63d0b2c2ea1257bf158d1.json +41 -0
- data/data/subdivision/CN--811c44443066fcfc8e7e89bf11ed8948571f047a.json +33 -0
- data/data/subdivision/CN--817d521b505a5b94638f4904b6d5aebd8ed22b68.json +29 -0
- data/data/subdivision/CN--84e2623ff90594ceccf1392e301aa757953516ab.json +42 -0
- data/data/subdivision/CN--85159c44faafdda7405cbdb69335391669ef583c.json +29 -0
- data/data/subdivision/CN--8540887f11f7fd275b11fe1988a1283317c11adb.json +26 -0
- data/data/subdivision/CN--875b091060b8e96ab92d6cb918a15bb450ba6498.json +23 -0
- data/data/subdivision/CN--87ddb696bd1cabc8a574cee98e7e81b6f6c070e8.json +32 -0
- data/data/subdivision/CN--8838a58bcf1f6d7f7a1e30f94725bbb4c5eb3f44.json +43 -0
- data/data/subdivision/CN--8931e6f3c706379b784f0a35b2b59df619fe013f.json +37 -0
- data/data/subdivision/CN--894f47283e88caa606e0cf0c39df48c53592524f.json +30 -0
- data/data/subdivision/CN--899ff1a3d8dc39b5686f19f64db630a84f237937.json +48 -0
- data/data/subdivision/CN--89b31b9cdca97c37d07561711b7a57e9363f2f71.json +23 -0
- data/data/subdivision/CN--8a5eba581dad7788fea0a37480a07e4c6c915666.json +27 -0
- data/data/subdivision/CN--8cb4a1682951804b7d0aad8cc5eb2d38bff1c008.json +35 -0
- data/data/subdivision/CN--8d6d528c82cf799f4339a1c06445db95fe8cc41e.json +47 -0
- data/data/subdivision/CN--8d8b5586b87379f3dd073f6609fac9cf03b768da.json +171 -0
- data/data/subdivision/CN--8d92a058645affdae0eca68b0d1f1b144c63e4a3.json +47 -0
- data/data/subdivision/CN--8dd86a59b861d3c7a05cbd2ec7defb76d9f93efb.json +20 -0
- data/data/subdivision/CN--8e220f550835f58a2f23eb0621fbd02b6daefcd4.json +47 -0
- data/data/subdivision/CN--8e706a9ec37f39c5fa8f3011f0b2f197c88b300f.json +17 -0
- data/data/subdivision/CN--8fbe4072c85cf55d91e6ea092941ffc54c1e4800.json +63 -0
- data/data/subdivision/CN--9010c00f30480d412da6923ed38bb86974f83929.json +50 -0
- data/data/subdivision/CN--902d986f34b4864fc03a34db12d606b3b682335b.json +83 -0
- data/data/subdivision/CN--90f284f36e8316587826f822cfeca27a6f7d4c8c.json +47 -0
- data/data/subdivision/CN--91342ead9e4ab316b40b750c975f099082c2da42.json +20 -0
- data/data/subdivision/CN--917904bab76459fee9bab265fb033f4bc02a38c1.json +44 -0
- data/data/subdivision/CN--9214483e5bdc161207c2eda271c92c0ce1c9eaea.json +41 -0
- data/data/subdivision/CN--9435521309c03806fbf7ae5f10259aaa87cebcd2.json +32 -0
- data/data/subdivision/CN--947d3d31e56ffed14a6b3f971b37af1dfd80123f.json +41 -0
- data/data/subdivision/CN--94b85305584cf714cd6e736275ecd548cddee150.json +17 -0
- data/data/subdivision/CN--960833c4626cd95cb6b0344916f05211df879d95.json +32 -0
- data/data/subdivision/CN--96f3282558b86241d107230e0a384ed8d312404e.json +26 -0
- data/data/subdivision/CN--97324941cc597556ffcd0b8f4a574ea82cc15785.json +38 -0
- data/data/subdivision/CN--9741b253c32bad5c1a1c89aab9b9f0240c933636.json +44 -0
- data/data/subdivision/CN--981c7aff9fbce454897b81da54f753847efab0c4.json +86 -0
- data/data/subdivision/CN--9820fad82ff8873986715fb6feeec8aff87c1f16.json +41 -0
- data/data/subdivision/CN--98b6530bcf0dba2b807d54672fa7ecaa92496c0b.json +33 -0
- data/data/subdivision/CN--9946ada01bda59fde73ca24ca2d149f92d3f2104.json +20 -0
- data/data/subdivision/CN--99e5ca415186c7033ff59668ebf9f98cc2ebd59e.json +32 -0
- data/data/subdivision/CN--9a007feb91e5376599c57d890c8ebfc28411ad7f.json +41 -0
- data/data/subdivision/CN--9a200825eb9baaf613db371bd00c5b7d39cffaab.json +41 -0
- data/data/subdivision/CN--9aa5979e85d48c229078228aa9dfcefe5bebf3ee.json +44 -0
- data/data/subdivision/CN--9ab866980a8d0dc141fcc129a75cb12e3fac0a85.json +38 -0
- data/data/subdivision/CN--9b40e817dc6932693a562f383241ff3ca5d11193.json +17 -0
- data/data/subdivision/CN--9c9d429798688c17d0ce63bc8a981420ddeca780.json +20 -0
- data/data/subdivision/CN--9dd0fa854ad6c8fd4aa47f137ed11dbc17b88357.json +35 -0
- data/data/subdivision/CN--9f3a791dcbc2953838a4b97d3de2c9c69ef6523c.json +35 -0
- data/data/subdivision/CN--a020d9fb89b3ebb28391d0db9eb15c011562999c.json +41 -0
- data/data/subdivision/CN--a0a5fecc2269cf008153a82eec7c7a7367ea504d.json +23 -0
- data/data/subdivision/CN--a1c540bf01340ceb1cc39fe92f9cc3fb75be61ad.json +33 -0
- data/data/subdivision/CN--a27ca75916d0d55e7c89170ad26337fc0d353240.json +41 -0
- data/data/subdivision/CN--a29c1958aafc36731f1f79181475e7e7d3819899.json +41 -0
- data/data/subdivision/CN--a2f7842ae5911be70c2b8f2d4810ddac9cacd5dc.json +34 -0
- data/data/subdivision/CN--a4987251a88ec2248a89e139d3213d516918387b.json +65 -0
- data/data/subdivision/CN--a539488a4b2b92ce34e2705ce2e102fbfffc3848.json +159 -0
- data/data/subdivision/CN--a548f2be68d082deee8be5cf7a5d5b3c3962ee16.json +35 -0
- data/data/subdivision/CN--a6b2dc112d0f6c29e35bebfff3c477c634c1e914.json +26 -0
- data/data/subdivision/CN--a747fe675b4b42cd0f3d1ca38dd1fa5bae1769af.json +35 -0
- data/data/subdivision/CN--a8dd068d0a9b796daefcf4b95502f0a3a07f94b3.json +68 -0
- data/data/subdivision/CN--a8e970f7dddcb45ae984379c5440040062c12c98.json +29 -0
- data/data/subdivision/CN--a9145979e5371f91438c30184e7a043ca1d1d141.json +32 -0
- data/data/subdivision/CN--a956e5011a68923d3c3ba0f5d0ad81948a326748.json +23 -0
- data/data/subdivision/CN--aa026e09ba12df034711a34447ae8e7eed7d8ec6.json +38 -0
- data/data/subdivision/CN--aa2275386bbdcae37e80a53de3ce94c05d496d6f.json +23 -0
- data/data/subdivision/CN--ab6c387135b7cb73932fb165c426c31cab1db6c4.json +39 -0
- data/data/subdivision/CN--acc1a168e6ce08d634ef9f5bf3d91037b1df47d6.json +44 -0
- data/data/subdivision/CN--ae1933cc9b4337807fc8ec9a30ea6acd82be4703.json +26 -0
- data/data/subdivision/CN--ae1bcb97db927b35d53961dfa9aa16abad9af744.json +26 -0
- data/data/subdivision/CN--ae5f6cae7dc3d00d3d62caa2d9d85bd90347a304.json +39 -0
- data/data/subdivision/CN--af340f6f0da32a6e808f35fa3582fc5c38d21dc5.json +32 -0
- data/data/subdivision/CN--af7c63630a388776e1b7bcde9cb47ab12d284661.json +50 -0
- data/data/subdivision/CN--b03d4229b286eb69bf1f3bdeedd41850952b40b9.json +17 -0
- data/data/subdivision/CN--b0a31a8de0b2a8312ed8da34e7f3b190d3fb42b2.json +26 -0
- data/data/subdivision/CN--b12621c9209e7c0c2b78d9b3ca9f67b2d7490446.json +32 -0
- data/data/subdivision/CN--b1e0bcf13fe89cedc14f72c743d1447c082fea99.json +35 -0
- data/data/subdivision/CN--b273a7570cb8b35460fb2087509a9d7f068a9b1d.json +20 -0
- data/data/subdivision/CN--b2c2d0f794217c92f0b581187910ad868312a955.json +35 -0
- data/data/subdivision/CN--b2dc83db0e6b5f4561a606b80f8b90853094ff11.json +32 -0
- data/data/subdivision/CN--b2f7e841f6101d229db33eb3d9eede5c713e5e9e.json +32 -0
- data/data/subdivision/CN--b4d5a3967c744f94cccdd0a41c6a549706551c20.json +29 -0
- data/data/subdivision/CN--b64de12af6c6d9245587c3a67f92cf1055edc0e7.json +23 -0
- data/data/subdivision/CN--b7bc483427024bebb9821d9e3533db26181e3ddc.json +26 -0
- data/data/subdivision/CN--b8466ec955a5a8011eb1213174c0e8249915bf5a.json +44 -0
- data/data/subdivision/CN--b9314ba7b779031ca175c7c8babe762b9aeda363.json +38 -0
- data/data/subdivision/CN--b969e573f155e45f34bffe7b509d4d6648f7e351.json +38 -0
- data/data/subdivision/CN--b99450898295c97eec8ca956d8a8ceb4790ee08d.json +48 -0
- data/data/subdivision/CN--b9ca9d98d05f98154c46e3b27aa78e1d8b27b828.json +21 -0
- data/data/subdivision/CN--ba31d5d84fadd768c2aa191a3e2622d6e0ab3e7f.json +20 -0
- data/data/subdivision/CN--ba92e70d88a0e426ecf105cb8f80ef56c55fcd23.json +20 -0
- data/data/subdivision/CN--baddd8ddb7d636d5ab4ae7960c5abfd085473f5f.json +38 -0
- data/data/subdivision/CN--bb9db9dacbc989da0c60101035c8cf4ecf2ca6d8.json +29 -0
- data/data/subdivision/CN--bd11c29fd8b53c05b53d806f45d4292afd8c1e2c.json +44 -0
- data/data/subdivision/CN--bd5dc2fd2dad26f820c3853165f22804178c4f7e.json +26 -0
- data/data/subdivision/CN--be1b6ab85db973a23c79a20c470421a0f8c16996.json +39 -0
- data/data/subdivision/CN--be64f468b37b4ec818662d6289d5b84d38051bde.json +35 -0
- data/data/subdivision/CN--bee151254b5a534797c0aa0bd5e6fc7c3e1a31bd.json +115 -0
- data/data/subdivision/CN--bf0b80e47302878ff179fec280f76a2dfd922e9d.json +47 -0
- data/data/subdivision/CN--bf667e8129d939f4f94d68997d7a6d2d7147dc02.json +35 -0
- data/data/subdivision/CN--bfd48924013e7f5d4c5a9ba68c3343e7f28cb36c.json +32 -0
- data/data/subdivision/CN--bfef3c2c88e3376658c3edc3742eea5154a45abb.json +47 -0
- data/data/subdivision/CN--bff9be21a0f282390c6706ee575b978d2e39183c.json +29 -0
- data/data/subdivision/CN--c13a220d51eb1aa4197f23e381c927a87a851772.json +35 -0
- data/data/subdivision/CN--c1a32ce65700c13ccf65888ece4a898d998dd58c.json +127 -0
- data/data/subdivision/CN--c22e276885a80c6e7dfa22d12379fc425fe13457.json +26 -0
- data/data/subdivision/CN--c2afb02a0b48a576c141dc610035d7ad1751dc9d.json +33 -0
- data/data/subdivision/CN--c4ad8b34c11249d5e177532c0ba19a6bef5ba27a.json +143 -0
- data/data/subdivision/CN--c5a386e9165534acf1b3d44aef53c37ecacc64f5.json +50 -0
- data/data/subdivision/CN--c5d94dcdba662e0558ea5dac182f1583a24b5481.json +24 -0
- data/data/subdivision/CN--c63cff9a59e07caf40415c5061118b60820787f6.json +47 -0
- data/data/subdivision/CN--c77ebdb4985a1d748af0d6d45f4b4c04b0d680a8.json +23 -0
- data/data/subdivision/CN--c78414b6b8154f18e21d8206970dd45c7146fe33.json +56 -0
- data/data/subdivision/CN--c7ea8fd487a9f53997ff6be447a3408cc12e0ac4.json +44 -0
- data/data/subdivision/CN--c816c027698be0eb024d9fff980ba83b5c692844.json +23 -0
- data/data/subdivision/CN--c91b0a403273b2905db0e289f6a78246cd10d673.json +26 -0
- data/data/subdivision/CN--c998d4329fdf44c4935d5d28025f0413b06d422b.json +23 -0
- data/data/subdivision/CN--ca9cee444fa4aabed8a1bcaefcc13d7316d27de9.json +47 -0
- data/data/subdivision/CN--cb2c7e1fc5d134b6959714cb248dcf89672a4e3c.json +29 -0
- data/data/subdivision/CN--cb8dc9703e0dc93423dde94fe4f599a08c29399f.json +29 -0
- data/data/subdivision/CN--cf2126ce5fd5d61efb378bfbc8da2432821c0edc.json +23 -0
- data/data/subdivision/CN--d089485d58270f1148fa237dd6f8ac1827b0e557.json +41 -0
- data/data/subdivision/CN--d0ed504bdca4837539da41e9670400e6fcef41b3.json +47 -0
- data/data/subdivision/CN--d2afd235614161aba2484775ac191a97fadfea24.json +17 -0
- data/data/subdivision/CN--d2ee4bab5e203b127c7ab4055b708ba496e4482a.json +32 -0
- data/data/subdivision/CN--d2f19325f0dc385995ff18eef58579eb082731a4.json +65 -0
- data/data/subdivision/CN--d695083693298fbc67a21725bddabca4fa5f467d.json +50 -0
- data/data/subdivision/CN--d756944cac93755dbc276483fcc6b965fa256836.json +41 -0
- data/data/subdivision/CN--d7b1c04fefea6c11215e3db719a6b9b57dc4be68.json +55 -0
- data/data/subdivision/CN--d94d14bff61e357c118c90a6be4777807dddb204.json +63 -0
- data/data/subdivision/CN--daccaded7000e49fe4932bb23016baadabad2ee1.json +33 -0
- data/data/subdivision/CN--dad74741ea62fa2a80b32fdebf777950511f1068.json +45 -0
- data/data/subdivision/CN--db354cbf043158fb31855a12a5999c52ee907b82.json +47 -0
- data/data/subdivision/CN--dbfc110385f3f45e3376b5c24f1a6e2ff8da93c6.json +59 -0
- data/data/subdivision/CN--dc9c9cc7873549bd12db8a70107112bd56f0eb84.json +20 -0
- data/data/subdivision/CN--dcde14e6c85e703ffdb701a3e97e79112a360285.json +32 -0
- data/data/subdivision/CN--dd7452b4daea85b0db43ebfd52085acbceca0abb.json +47 -0
- data/data/subdivision/CN--df8e717960dc40a5ba73ca0fad17863f8facdbc2.json +39 -0
- data/data/subdivision/CN--e2b6b2864634957812a1996214d4c60beb319d56.json +26 -0
- data/data/subdivision/CN--e4e8f448753d94dd36b1c4e817b8e604d854f37b.json +35 -0
- data/data/subdivision/CN--e5124862828b8d572183e85dfa2b827c022f904a.json +32 -0
- data/data/subdivision/CN--e61ef3250d2d656f96ff3723de8666e914575257.json +32 -0
- data/data/subdivision/CN--e6817442723f52a89290598096e4ccbb9b6fae81.json +30 -0
- data/data/subdivision/CN--e883b5a2518749a1e5746cdf6859df6a9fea4ad9.json +38 -0
- data/data/subdivision/CN--e88542f350ffa035ff3626d244c746f9e0101423.json +26 -0
- data/data/subdivision/CN--ea75c1898c9c6b85b9448fa3335aa8bc6c6aba73.json +64 -0
- data/data/subdivision/CN--ec53b6a09d1feebeb57221bdd05c6b85eb20d57c.json +48 -0
- data/data/subdivision/CN--ecba7a6343e184aec9f8aa270f1776b518017065.json +44 -0
- data/data/subdivision/CN--ee129cd43d16c873acaff28287ee7c298832bfbc.json +35 -0
- data/data/subdivision/CN--ee4adef9be42a1ffc9d772b091c203a1336d422f.json +27 -0
- data/data/subdivision/CN--ee9a400b5b72eff096b6dc2a38e69255300c1a12.json +35 -0
- data/data/subdivision/CN--ef0d859ef35cb38da3ddbb8f615e8d98c0c0300d.json +29 -0
- data/data/subdivision/CN--ef29fe750c84c31e930f67e3f77655ddba89ebec.json +35 -0
- data/data/subdivision/CN--effb3dc5d923d13dcddc1e7b6ea00e24141f2765.json +29 -0
- data/data/subdivision/CN--f03c7018405e04724c3bd1c7063ce0e922b69c52.json +35 -0
- data/data/subdivision/CN--f172b59ac04b6f20f30e7dabbaa50fe3986844b9.json +44 -0
- data/data/subdivision/CN--f24fa513f443e43fa8d605099da70b0a9686c35f.json +62 -0
- data/data/subdivision/CN--f323788d75fc867c84d39a6d279f8b1297ccc143.json +44 -0
- data/data/subdivision/CN--f35e6761d6801ebd175e4a57909d5afa2a9e5da9.json +32 -0
- data/data/subdivision/CN--f3602dc7a9df5a045a22071d2d5e7204e8bcfb41.json +47 -0
- data/data/subdivision/CN--f3a141c60fbd565e1a49a8e104b578ef1140964b.json +23 -0
- data/data/subdivision/CN--f48aace46a12762b97806dbac9849e9f586e3fda.json +29 -0
- data/data/subdivision/CN--f5562dab49fcd4a67dd225829983995b8bbeec46.json +29 -0
- data/data/subdivision/CN--f63728c4dd76f4d11c51d55fd87c52e7fa037f25.json +32 -0
- data/data/subdivision/CN--f6430b4dc9893cd5d876f7cd66e49d010d9d3c00.json +23 -0
- data/data/subdivision/CN--f6b2109ca3cb1c5747b90728eb59b51985ae780d.json +29 -0
- data/data/subdivision/CN--f6e4ac6adda8f86b2bcbf82df7921955d8d157b1.json +26 -0
- data/data/subdivision/CN--fa2a7766122716b35f87ffeeb1f979f08df70186.json +38 -0
- data/data/subdivision/CN--fac9151a2fc12ebb3396d9e42802f63e1e1434c0.json +44 -0
- data/data/subdivision/CN--fb77515aa578703421f9ab9816d1c0ef178580ec.json +32 -0
- data/data/subdivision/CN--fc2eb0fe12a65d3a11f3fd5e324a7a92e115f29c.json +50 -0
- data/data/subdivision/CN--fcb2d34c9fd173e8e7c0a4e43cfbbee5e158daf3.json +29 -0
- data/data/subdivision/CN--fed1a77715935132ed70db75a50212a84ce3262c.json +65 -0
- data/data/subdivision/CN--ff3f9ef4b9d16d755abc51182333884fe0fedcd6.json +35 -0
- data/data/subdivision/CN-094d515b3608fefc6759a36412cee467437417a5.json +120 -0
- data/data/subdivision/CN-15441f859d9345c955e43ddbb247c6a5b8a6d1d2.json +62 -0
- data/data/subdivision/CN-18c967e38da6a13d39bae17960087b62b7d19155.json +54 -0
- data/data/subdivision/CN-233c3565a515c5f6dd6aba6d0b47371141ca75e4.json +61 -0
- data/data/subdivision/CN-2d417dbdefe45f149350f12f5822ac5322b4663e.json +54 -0
- data/data/subdivision/CN-2f38bcca326a7182c0f19b883574bb6387bfb35a.json +92 -0
- data/data/subdivision/CN-2f488ffc82ccc67a1616e39fdfc537297f1646c5.json +19 -0
- data/data/subdivision/CN-3fdfd13c62c7d470d35d77589c6ad3ca3bb4ef14.json +54 -0
- data/data/subdivision/CN-5266e6b9e1bb6018f02cd4ab62bea83ec41e2d1c.json +78 -0
- data/data/subdivision/CN-5693f489149e42f2bd1b4537f5355400135e422a.json +66 -0
- data/data/subdivision/CN-5fab442919bda9e58057f8fcf0627517e6e196cb.json +62 -0
- data/data/subdivision/CN-614f72bfe609e39ba591008077005e72901a873d.json +82 -0
- data/data/subdivision/CN-63c5c99407afe13d7fe88da54b208c1fe7d3bc86.json +78 -0
- data/data/subdivision/CN-720bd2bb9c3b37deb045bd6dba6f9ed1ba45eff8.json +30 -0
- data/data/subdivision/CN-775036c06624f70ca61020cf0394da3a5f9e7a63.json +67 -0
- data/data/subdivision/CN-7d19fd4c89d30e76563a89a9388e53eeaaca17dc.json +47 -0
- data/data/subdivision/CN-83f0ec9345c8c7ec61b65995563ea9c3657be954.json +58 -0
- data/data/subdivision/CN-84b48a43cb3e5aa84f32070054e1723eaefe7da0.json +66 -0
- data/data/subdivision/CN-8ab3fde802842d60aa7f264c2c6efe25c2f57715.json +54 -0
- data/data/subdivision/CN-926ea2788009c3b203bd9acbb78cfd055c1704ae.json +49 -0
- data/data/subdivision/CN-ae93809508d267d1dbf2bd6532c2f0425a5237c5.json +97 -0
- data/data/subdivision/CN-b2e575d1ebad4eeb901de6a04d6f617be2ced82a.json +75 -0
- data/data/subdivision/CN-b8ebbabc3bda1a367b55f0381de3acc3f102a4bc.json +78 -0
- data/data/subdivision/CN-c75b3c9c937e472ebfef527702333d772f668cf3.json +48 -0
- data/data/subdivision/CN-d01590376e015fbee0d9c84ab999e9136e9388de.json +38 -0
- data/data/subdivision/CN-d24b382ee52b2b327601fc007778d3bc327cc682.json +128 -0
- data/data/subdivision/CN-d887137dc25357e79147cc2c2352a2d09a392e01.json +13 -0
- data/data/subdivision/CN-e01e36713292b17efc85b0296d0b8c376f4d9833.json +58 -0
- data/data/subdivision/CN-ea727cd74ce9ddb7bfd795046f458b87e49c10b9.json +75 -0
- data/data/subdivision/CN-ecf3881e9faeda48dea4f9afc06ea5d66a3bf663.json +83 -0
- data/data/subdivision/CN-f404e343088e327fd46403942c1d3f4d43d973fe.json +67 -0
- data/data/subdivision/CN-f51c396d0e706c5180ead8075440c2aa9bb09b7e.json +46 -0
- data/data/subdivision/CN-f85ebe9364e066b1281c56b9995ca80596309469.json +50 -0
- data/data/subdivision/CN-fae44b9751c6daeb26ecfd74006dc55136d3e548.json +58 -0
- data/data/subdivision/CN.json +187 -0
- data/data/subdivision/CO.json +170 -0
- data/data/subdivision/CU.json +53 -0
- data/data/subdivision/CV.json +28 -0
- data/data/subdivision/EG.json +141 -0
- data/data/subdivision/ES.json +214 -0
- data/data/subdivision/HK-2705954f46a43ef0ad522412afe6ed6ee8196fe4.json +204 -0
- data/data/subdivision/HK-29ceaf41d01206ba481b188116cbb302b82663cf.json +90 -0
- data/data/subdivision/HK-ff51a84233701e6a1d18f70acf4b3f909e4c6a09.json +105 -0
- data/data/subdivision/HK.json +17 -0
- data/data/subdivision/ID.json +142 -0
- data/data/subdivision/IE.json +83 -0
- data/data/subdivision/IN.json +152 -0
- data/data/subdivision/IR.json +130 -0
- data/data/subdivision/IT.json +540 -0
- data/data/subdivision/JM.json +47 -0
- data/data/subdivision/JP.json +241 -0
- data/data/subdivision/KN.json +11 -0
- data/data/subdivision/KP.json +50 -0
- data/data/subdivision/KR--10380aeba4d57de65d23edd378d87d341e309ad3.json +23 -0
- data/data/subdivision/KR--17d2e2e7e4d82f673003c0f00ddf6775f9e9d624.json +27 -0
- data/data/subdivision/KR--1eed8cd8aad2755b2ff6b462a0e53b0ae45a7d93.json +19 -0
- data/data/subdivision/KR--3873b1eef71cae89d380cc53cc3312048507dcc1.json +23 -0
- data/data/subdivision/KR--38dfdcf90a0424ae1b26847d5996ba64eaf7c47e.json +19 -0
- data/data/subdivision/KR--437ec9549b2c97ef620f6736f26964a067955cf7.json +19 -0
- data/data/subdivision/KR--5cc3de16ce27ac190f7a35068bcdec1ec8535b07.json +19 -0
- data/data/subdivision/KR--6f6f6b8e8f0c54a12ab4a905630f849077f8cdf7.json +19 -0
- data/data/subdivision/KR--73f130c4099bceaa0ba69e7e283a7265abe28670.json +27 -0
- data/data/subdivision/KR--7443d234090082af0f0e71e51e67d78352b45183.json +23 -0
- data/data/subdivision/KR--88985f9cde34c3a8c97930237ebd0273514db701.json +23 -0
- data/data/subdivision/KR--aff6230e2d2b9d8bf8ec82fffcda8e709f0ba7df.json +31 -0
- data/data/subdivision/KR-20fa1a1a791a5001961b2932ecc123b6b79e58ad.json +30 -0
- data/data/subdivision/KR-24f5da98a140da25091ad9baffa785099373e97e.json +55 -0
- data/data/subdivision/KR-2878c892557b1e0bfdda282c6679155dd770b4f6.json +103 -0
- data/data/subdivision/KR-4891e50974e5f36e5791f3d349b8f9ff96e91381.json +71 -0
- data/data/subdivision/KR-545d140f93958d653bffff25418a7aa6b3f9d85f.json +74 -0
- data/data/subdivision/KR-570ebc998338d00a27d7e4ebe6f0dea8eb6dce97.json +98 -0
- data/data/subdivision/KR-570fad709520de1a85f850b94dd5d59fa51b8513.json +30 -0
- data/data/subdivision/KR-59f054fa5a2164fb3ae235dd40b71eea61fc005f.json +110 -0
- data/data/subdivision/KR-5b9e838e346bf14a6588e58153bbdb060c3acffb.json +18 -0
- data/data/subdivision/KR-707145d7d5b5416975c683088f225f4848b0b769.json +30 -0
- data/data/subdivision/KR-811414ca1d9a995f8c2e4570707dc4056137df33.json +50 -0
- data/data/subdivision/KR-85585d19281c022e352b5f23c7f3b3ad120fa6db.json +70 -0
- data/data/subdivision/KR-8bb3dce6243a822f4c41c00c8bd0dd597a07c983.json +82 -0
- data/data/subdivision/KR-8d120770f5346614bec5230859a357de59450bac.json +67 -0
- data/data/subdivision/KR-add591c6b6a13ed5c50595b37f798107ab6390e2.json +83 -0
- data/data/subdivision/KR-c6e6b075ad50b1257253ce3e8cf7c23de859afb1.json +42 -0
- data/data/subdivision/KR-e68c36c4b783009f682993e4423155009da1f0e3.json +141 -0
- data/data/subdivision/KR.json +125 -0
- data/data/subdivision/KY.json +11 -0
- data/data/subdivision/MX.json +165 -0
- data/data/subdivision/MY.json +69 -0
- data/data/subdivision/MZ.json +38 -0
- data/data/subdivision/NG.json +116 -0
- data/data/subdivision/NI.json +73 -0
- data/data/subdivision/NR.json +47 -0
- data/data/subdivision/PE.json +83 -0
- data/data/subdivision/PH.json +332 -0
- data/data/subdivision/RU.json +430 -0
- data/data/subdivision/SO.json +77 -0
- data/data/subdivision/SR.json +35 -0
- data/data/subdivision/SV.json +68 -0
- data/data/subdivision/TH.json +390 -0
- data/data/subdivision/TR.json +329 -0
- data/data/subdivision/TV.json +31 -0
- data/data/subdivision/TW-0a64258e89e9f09959ca9af7c1c3120de1b5782c.json +90 -0
- data/data/subdivision/TW-1a5fa7ed48362b5df91d47ccb6792a9d1dcffd1b.json +170 -0
- data/data/subdivision/TW-23007ded3bdf8182308c75fbb266ff7277e7bba1.json +16 -0
- data/data/subdivision/TW-3406b129d0be1a4014022b3461e1dd29a65b7b46.json +34 -0
- data/data/subdivision/TW-3be00bbe4b66cb97ebc80c12bb4495727fa60f30.json +62 -0
- data/data/subdivision/TW-40936e2a8431ccc9a9b27c6d8f9eaa92b8bbb69c.json +58 -0
- data/data/subdivision/TW-412ca2648b73f3d54231a9ad34ceaae0246d28c6.json +82 -0
- data/data/subdivision/TW-497093ce79b07f6e690d012722e1fa6303b301b8.json +62 -0
- data/data/subdivision/TW-5be6ce0acf51da9cbab4a380234e1fd7e833248b.json +38 -0
- data/data/subdivision/TW-62457c5125b9883ae4ab7fca3f239a06c5810960.json +58 -0
- data/data/subdivision/TW-62b19b27d94fc23d7eb2db35ba8b8e6023cdab0b.json +142 -0
- data/data/subdivision/TW-62d4107c924194b24d88249f8ca99389eb62d053.json +34 -0
- data/data/subdivision/TW-686d2b0ed7647dfe1d3d4bd2ade1c7e7a1940b0b.json +74 -0
- data/data/subdivision/TW-6e2de4fc773418e1f65442b69fcee8a33c74108c.json +126 -0
- data/data/subdivision/TW-850decef636590b4b5989d5adb127754d0bb9204.json +82 -0
- data/data/subdivision/TW-903e2cef7cfc886908e690a2a0e9d51bcac7292c.json +62 -0
- data/data/subdivision/TW-9a2f374fb1c944b3c0d9451b91d5f1f72c74f003.json +126 -0
- data/data/subdivision/TW-c924ca4a06d4f45cd7b78dab6da860fb59992444.json +26 -0
- data/data/subdivision/TW-cab04228f1d633bca4b26f327302378be1307d6c.json +19 -0
- data/data/subdivision/TW-cf725324beb93dbbe8f7a467f652ed4799f093dc.json +114 -0
- data/data/subdivision/TW-d2ada4be5114eb3b85a67ff7e22c2097b5e03337.json +62 -0
- data/data/subdivision/TW-d654b7cfb0ae9eb69033812814aa749470dcaad2.json +158 -0
- data/data/subdivision/TW.json +136 -0
- data/data/subdivision/UA.json +143 -0
- data/data/subdivision/US.json +304 -0
- data/data/subdivision/UY.json +81 -0
- data/data/subdivision/VE.json +80 -0
- data/data/subdivision/VN.json +258 -0
- data/lib/addressing/address.rb +105 -0
- data/lib/addressing/address_field.rb +21 -0
- data/lib/addressing/address_format.rb +144 -0
- data/lib/addressing/administrative_area_type.rb +27 -0
- data/lib/addressing/country.rb +378 -0
- data/lib/addressing/default_formatter.rb +154 -0
- data/lib/addressing/dependent_locality_type.rb +19 -0
- data/lib/addressing/enum.rb +38 -0
- data/lib/addressing/lazy_subdivisions.rb +26 -0
- data/lib/addressing/locale.rb +344 -0
- data/lib/addressing/locality_type.rb +18 -0
- data/lib/addressing/pattern_type.rb +20 -0
- data/lib/addressing/postal_code_type.rb +18 -0
- data/lib/addressing/postal_label_formatter.rb +56 -0
- data/lib/addressing/subdivision.rb +251 -0
- data/lib/addressing/version.rb +5 -0
- data/lib/addressing.rb +28 -0
- metadata +723 -0
@@ -0,0 +1,378 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Addressing
|
4
|
+
class Country
|
5
|
+
class << self
|
6
|
+
@@definitions = {}
|
7
|
+
|
8
|
+
@@available_locales = [
|
9
|
+
"af", "am", "ar", "ar-LY", "ar-SA", "as", "az", "be", "bg", "bn",
|
10
|
+
"bn-IN", "bs", "ca", "cs", "cy", "da", "de", "de-AT", "de-CH", "el",
|
11
|
+
"en", "en-001", "en-CA", "en-GB", "es", "es-419", "es-AR",
|
12
|
+
"es-BO", "es-CL", "es-CO", "es-CR", "es-DO", "es-EC", "es-GT", "es-HN",
|
13
|
+
"es-MX", "es-NI", "es-PA", "es-PE", "es-PR", "es-PY", "es-SV", "es-US",
|
14
|
+
"es-VE", "et", "eu", "fa", "fa-AF", "fi", "fil", "fr", "fr-BE", "fr-CA",
|
15
|
+
"ga", "gl", "gu", "he", "hi", "hr", "hu", "hy", "id", "is", "it", "ja",
|
16
|
+
"ka", "kk", "km", "ko", "ko-KP", "ky", "lo", "lt", "lv", "mk", "ml",
|
17
|
+
"mn", "mr", "ms", "my", "ne", "nl", "nn", "no", "or", "pa", "pl", "ps",
|
18
|
+
"ps-PK", "pt", "pt-PT", "ro", "ro-MD", "ru", "ru-UA", "sd", "si", "sk",
|
19
|
+
"sl", "so", "sq", "sr", "sr-Cyrl-BA", "sr-Cyrl-ME", "sr-Cyrl-XK",
|
20
|
+
"sr-Latn", "sr-Latn-BA", "sr-Latn-ME", "sr-Latn-XK", "sv", "sw",
|
21
|
+
"sw-CD", "sw-KE", "ta", "te", "th", "tk", "tr", "uk", "ur", "ur-IN",
|
22
|
+
"uz", "vi", "yue", "zh", "zh-Hant", "zh-Hant-HK", "zu"
|
23
|
+
]
|
24
|
+
|
25
|
+
def get(country_code, locale = "en", fallback_locale = "en")
|
26
|
+
country_code = country_code.upcase
|
27
|
+
|
28
|
+
raise UnknownCountryError, country_code unless base_definitions.key?(country_code)
|
29
|
+
|
30
|
+
locale = Locale.resolve(@@available_locales, locale, fallback_locale)
|
31
|
+
definitions = load_definitions(locale)
|
32
|
+
|
33
|
+
new(
|
34
|
+
country_code: country_code,
|
35
|
+
name: definitions[country_code],
|
36
|
+
three_letter_code: base_definitions[country_code][0],
|
37
|
+
numeric_code: base_definitions[country_code][1],
|
38
|
+
currency_code: base_definitions[country_code][2],
|
39
|
+
locale: locale
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
def all(locale = "en", fallback_locale = "en")
|
44
|
+
locale = Locale.resolve(@@available_locales, locale, fallback_locale)
|
45
|
+
definitions = load_definitions(locale)
|
46
|
+
|
47
|
+
definitions.map do |country_code, country_name|
|
48
|
+
country = new(
|
49
|
+
country_code: country_code,
|
50
|
+
name: country_name,
|
51
|
+
three_letter_code: base_definitions[country_code][0],
|
52
|
+
numeric_code: base_definitions[country_code][1],
|
53
|
+
currency_code: base_definitions[country_code][2],
|
54
|
+
locale: locale
|
55
|
+
)
|
56
|
+
|
57
|
+
[country_code, country]
|
58
|
+
end.to_h
|
59
|
+
end
|
60
|
+
|
61
|
+
def list(locale = "en", fallback_locale = "en")
|
62
|
+
locale = Locale.resolve(@@available_locales, locale, fallback_locale)
|
63
|
+
definitions = load_definitions(locale)
|
64
|
+
|
65
|
+
definitions.map do |country_code, country_name|
|
66
|
+
[country_code, country_name]
|
67
|
+
end.to_h
|
68
|
+
end
|
69
|
+
|
70
|
+
protected
|
71
|
+
|
72
|
+
# Loads the country definitions for the provided locale.
|
73
|
+
def load_definitions(locale)
|
74
|
+
unless @@definitions.key?(locale)
|
75
|
+
filename = File.join(File.expand_path("../../../data/country", __FILE__).to_s, "#{locale}.json")
|
76
|
+
@@definitions[locale] = JSON.parse(File.read(filename))
|
77
|
+
end
|
78
|
+
|
79
|
+
@@definitions[locale]
|
80
|
+
end
|
81
|
+
|
82
|
+
# Gets the base country definitions.
|
83
|
+
#
|
84
|
+
# Contains data common to all locales: three letter code, numeric code.
|
85
|
+
def base_definitions
|
86
|
+
@@base_definitions ||= {
|
87
|
+
"AC" => ["ASC", nil, "SHP"],
|
88
|
+
"AD" => ["AND", "020", "EUR"],
|
89
|
+
"AE" => ["ARE", "784", "AED"],
|
90
|
+
"AF" => ["AFG", "004", "AFN"],
|
91
|
+
"AG" => ["ATG", "028", "XCD"],
|
92
|
+
"AI" => ["AIA", "660", "XCD"],
|
93
|
+
"AL" => ["ALB", "008", "ALL"],
|
94
|
+
"AM" => ["ARM", "051", "AMD"],
|
95
|
+
"AO" => ["AGO", "024", "AOA"],
|
96
|
+
"AQ" => ["ATA", "010", nil],
|
97
|
+
"AR" => ["ARG", "032", "ARS"],
|
98
|
+
"AS" => ["ASM", "016", "USD"],
|
99
|
+
"AT" => ["AUT", "040", "EUR"],
|
100
|
+
"AU" => ["AUS", "036", "AUD"],
|
101
|
+
"AW" => ["ABW", "533", "AWG"],
|
102
|
+
"AX" => ["ALA", "248", "EUR"],
|
103
|
+
"AZ" => ["AZE", "031", "AZN"],
|
104
|
+
"BA" => ["BIH", "070", "BAM"],
|
105
|
+
"BB" => ["BRB", "052", "BBD"],
|
106
|
+
"BD" => ["BGD", "050", "BDT"],
|
107
|
+
"BE" => ["BEL", "056", "EUR"],
|
108
|
+
"BF" => ["BFA", "854", "XOF"],
|
109
|
+
"BG" => ["BGR", "100", "BGN"],
|
110
|
+
"BH" => ["BHR", "048", "BHD"],
|
111
|
+
"BI" => ["BDI", "108", "BIF"],
|
112
|
+
"BJ" => ["BEN", "204", "XOF"],
|
113
|
+
"BL" => ["BLM", "652", "EUR"],
|
114
|
+
"BM" => ["BMU", "060", "BMD"],
|
115
|
+
"BN" => ["BRN", "096", "BND"],
|
116
|
+
"BO" => ["BOL", "068", "BOB"],
|
117
|
+
"BQ" => ["BES", "535", "USD"],
|
118
|
+
"BR" => ["BRA", "076", "BRL"],
|
119
|
+
"BS" => ["BHS", "044", "BSD"],
|
120
|
+
"BT" => ["BTN", "064", "BTN"],
|
121
|
+
"BV" => ["BVT", "074", "NOK"],
|
122
|
+
"BW" => ["BWA", "072", "BWP"],
|
123
|
+
"BY" => ["BLR", "112", "BYN"],
|
124
|
+
"BZ" => ["BLZ", "084", "BZD"],
|
125
|
+
"CA" => ["CAN", "124", "CAD"],
|
126
|
+
"CC" => ["CCK", "166", "AUD"],
|
127
|
+
"CD" => ["COD", "180", "CDF"],
|
128
|
+
"CF" => ["CAF", "140", "XAF"],
|
129
|
+
"CG" => ["COG", "178", "XAF"],
|
130
|
+
"CH" => ["CHE", "756", "CHF"],
|
131
|
+
"CI" => ["CIV", "384", "XOF"],
|
132
|
+
"CK" => ["COK", "184", "NZD"],
|
133
|
+
"CL" => ["CHL", "152", "CLP"],
|
134
|
+
"CM" => ["CMR", "120", "XAF"],
|
135
|
+
"CN" => ["CHN", "156", "CNY"],
|
136
|
+
"CO" => ["COL", "170", "COP"],
|
137
|
+
"CP" => ["CPT", nil, nil],
|
138
|
+
"CR" => ["CRI", "188", "CRC"],
|
139
|
+
"CU" => ["CUB", "192", "CUC"],
|
140
|
+
"CV" => ["CPV", "132", "CVE"],
|
141
|
+
"CW" => ["CUW", "531", "ANG"],
|
142
|
+
"CX" => ["CXR", "162", "AUD"],
|
143
|
+
"CY" => ["CYP", "196", "EUR"],
|
144
|
+
"CZ" => ["CZE", "203", "CZK"],
|
145
|
+
"DE" => ["DEU", "276", "EUR"],
|
146
|
+
"DG" => ["DGA", nil, "USD"],
|
147
|
+
"DJ" => ["DJI", "262", "DJF"],
|
148
|
+
"DK" => ["DNK", "208", "DKK"],
|
149
|
+
"DM" => ["DMA", "212", "XCD"],
|
150
|
+
"DO" => ["DOM", "214", "DOP"],
|
151
|
+
"DZ" => ["DZA", "012", "DZD"],
|
152
|
+
"EA" => [nil, nil, "EUR"],
|
153
|
+
"EC" => ["ECU", "218", "USD"],
|
154
|
+
"EE" => ["EST", "233", "EUR"],
|
155
|
+
"EG" => ["EGY", "818", "EGP"],
|
156
|
+
"EH" => ["ESH", "732", "MAD"],
|
157
|
+
"ER" => ["ERI", "232", "ERN"],
|
158
|
+
"ES" => ["ESP", "724", "EUR"],
|
159
|
+
"ET" => ["ETH", "231", "ETB"],
|
160
|
+
"FI" => ["FIN", "246", "EUR"],
|
161
|
+
"FJ" => ["FJI", "242", "FJD"],
|
162
|
+
"FK" => ["FLK", "238", "FKP"],
|
163
|
+
"FM" => ["FSM", "583", "USD"],
|
164
|
+
"FO" => ["FRO", "234", "DKK"],
|
165
|
+
"FR" => ["FRA", "250", "EUR"],
|
166
|
+
"GA" => ["GAB", "266", "XAF"],
|
167
|
+
"GB" => ["GBR", "826", "GBP"],
|
168
|
+
"GD" => ["GRD", "308", "XCD"],
|
169
|
+
"GE" => ["GEO", "268", "GEL"],
|
170
|
+
"GF" => ["GUF", "254", "EUR"],
|
171
|
+
"GG" => ["GGY", "831", "GBP"],
|
172
|
+
"GH" => ["GHA", "288", "GHS"],
|
173
|
+
"GI" => ["GIB", "292", "GIP"],
|
174
|
+
"GL" => ["GRL", "304", "DKK"],
|
175
|
+
"GM" => ["GMB", "270", "GMD"],
|
176
|
+
"GN" => ["GIN", "324", "GNF"],
|
177
|
+
"GP" => ["GLP", "312", "EUR"],
|
178
|
+
"GQ" => ["GNQ", "226", "XAF"],
|
179
|
+
"GR" => ["GRC", "300", "EUR"],
|
180
|
+
"GS" => ["SGS", "239", "GBP"],
|
181
|
+
"GT" => ["GTM", "320", "GTQ"],
|
182
|
+
"GU" => ["GUM", "316", "USD"],
|
183
|
+
"GW" => ["GNB", "624", "XOF"],
|
184
|
+
"GY" => ["GUY", "328", "GYD"],
|
185
|
+
"HK" => ["HKG", "344", "HKD"],
|
186
|
+
"HM" => ["HMD", "334", "AUD"],
|
187
|
+
"HN" => ["HND", "340", "HNL"],
|
188
|
+
"HR" => ["HRV", "191", "HRK"],
|
189
|
+
"HT" => ["HTI", "332", "USD"],
|
190
|
+
"HU" => ["HUN", "348", "HUF"],
|
191
|
+
"IC" => [nil, nil, "EUR"],
|
192
|
+
"ID" => ["IDN", "360", "IDR"],
|
193
|
+
"IE" => ["IRL", "372", "EUR"],
|
194
|
+
"IL" => ["ISR", "376", "ILS"],
|
195
|
+
"IM" => ["IMN", "833", "GBP"],
|
196
|
+
"IN" => ["IND", "356", "INR"],
|
197
|
+
"IO" => ["IOT", "086", "USD"],
|
198
|
+
"IQ" => ["IRQ", "368", "IQD"],
|
199
|
+
"IR" => ["IRN", "364", "IRR"],
|
200
|
+
"IS" => ["ISL", "352", "ISK"],
|
201
|
+
"IT" => ["ITA", "380", "EUR"],
|
202
|
+
"JE" => ["JEY", "832", "GBP"],
|
203
|
+
"JM" => ["JAM", "388", "JMD"],
|
204
|
+
"JO" => ["JOR", "400", "JOD"],
|
205
|
+
"JP" => ["JPN", "392", "JPY"],
|
206
|
+
"KE" => ["KEN", "404", "KES"],
|
207
|
+
"KG" => ["KGZ", "417", "KGS"],
|
208
|
+
"KH" => ["KHM", "116", "KHR"],
|
209
|
+
"KI" => ["KIR", "296", "AUD"],
|
210
|
+
"KM" => ["COM", "174", "KMF"],
|
211
|
+
"KN" => ["KNA", "659", "XCD"],
|
212
|
+
"KP" => ["PRK", "408", "KPW"],
|
213
|
+
"KR" => ["KOR", "410", "KRW"],
|
214
|
+
"KW" => ["KWT", "414", "KWD"],
|
215
|
+
"KY" => ["CYM", "136", "KYD"],
|
216
|
+
"KZ" => ["KAZ", "398", "KZT"],
|
217
|
+
"LA" => ["LAO", "418", "LAK"],
|
218
|
+
"LB" => ["LBN", "422", "LBP"],
|
219
|
+
"LC" => ["LCA", "662", "XCD"],
|
220
|
+
"LI" => ["LIE", "438", "CHF"],
|
221
|
+
"LK" => ["LKA", "144", "LKR"],
|
222
|
+
"LR" => ["LBR", "430", "LRD"],
|
223
|
+
"LS" => ["LSO", "426", "LSL"],
|
224
|
+
"LT" => ["LTU", "440", "EUR"],
|
225
|
+
"LU" => ["LUX", "442", "EUR"],
|
226
|
+
"LV" => ["LVA", "428", "EUR"],
|
227
|
+
"LY" => ["LBY", "434", "LYD"],
|
228
|
+
"MA" => ["MAR", "504", "MAD"],
|
229
|
+
"MC" => ["MCO", "492", "EUR"],
|
230
|
+
"MD" => ["MDA", "498", "MDL"],
|
231
|
+
"ME" => ["MNE", "499", "EUR"],
|
232
|
+
"MF" => ["MAF", "663", "EUR"],
|
233
|
+
"MG" => ["MDG", "450", "MGA"],
|
234
|
+
"MH" => ["MHL", "584", "USD"],
|
235
|
+
"MK" => ["MKD", "807", "MKD"],
|
236
|
+
"ML" => ["MLI", "466", "XOF"],
|
237
|
+
"MM" => ["MMR", "104", "MMK"],
|
238
|
+
"MN" => ["MNG", "496", "MNT"],
|
239
|
+
"MO" => ["MAC", "446", "MOP"],
|
240
|
+
"MP" => ["MNP", "580", "USD"],
|
241
|
+
"MQ" => ["MTQ", "474", "EUR"],
|
242
|
+
"MR" => ["MRT", "478", "MRU"],
|
243
|
+
"MS" => ["MSR", "500", "XCD"],
|
244
|
+
"MT" => ["MLT", "470", "EUR"],
|
245
|
+
"MU" => ["MUS", "480", "MUR"],
|
246
|
+
"MV" => ["MDV", "462", "MVR"],
|
247
|
+
"MW" => ["MWI", "454", "MWK"],
|
248
|
+
"MX" => ["MEX", "484", "MXN"],
|
249
|
+
"MY" => ["MYS", "458", "MYR"],
|
250
|
+
"MZ" => ["MOZ", "508", "MZN"],
|
251
|
+
"NA" => ["NAM", "516", "NAD"],
|
252
|
+
"NC" => ["NCL", "540", "XPF"],
|
253
|
+
"NE" => ["NER", "562", "XOF"],
|
254
|
+
"NF" => ["NFK", "574", "AUD"],
|
255
|
+
"NG" => ["NGA", "566", "NGN"],
|
256
|
+
"NI" => ["NIC", "558", "NIO"],
|
257
|
+
"NL" => ["NLD", "528", "EUR"],
|
258
|
+
"NO" => ["NOR", "578", "NOK"],
|
259
|
+
"NP" => ["NPL", "524", "NPR"],
|
260
|
+
"NR" => ["NRU", "520", "AUD"],
|
261
|
+
"NU" => ["NIU", "570", "NZD"],
|
262
|
+
"NZ" => ["NZL", "554", "NZD"],
|
263
|
+
"OM" => ["OMN", "512", "OMR"],
|
264
|
+
"PA" => ["PAN", "591", "USD"],
|
265
|
+
"PE" => ["PER", "604", "PEN"],
|
266
|
+
"PF" => ["PYF", "258", "XPF"],
|
267
|
+
"PG" => ["PNG", "598", "PGK"],
|
268
|
+
"PH" => ["PHL", "608", "PHP"],
|
269
|
+
"PK" => ["PAK", "586", "PKR"],
|
270
|
+
"PL" => ["POL", "616", "PLN"],
|
271
|
+
"PM" => ["SPM", "666", "EUR"],
|
272
|
+
"PN" => ["PCN", "612", "NZD"],
|
273
|
+
"PR" => ["PRI", "630", "USD"],
|
274
|
+
"PS" => ["PSE", "275", "JOD"],
|
275
|
+
"PT" => ["PRT", "620", "EUR"],
|
276
|
+
"PW" => ["PLW", "585", "USD"],
|
277
|
+
"PY" => ["PRY", "600", "PYG"],
|
278
|
+
"QA" => ["QAT", "634", "QAR"],
|
279
|
+
"RE" => ["REU", "638", "EUR"],
|
280
|
+
"RO" => ["ROU", "642", "RON"],
|
281
|
+
"RS" => ["SRB", "688", "RSD"],
|
282
|
+
"RU" => ["RUS", "643", "RUB"],
|
283
|
+
"RW" => ["RWA", "646", "RWF"],
|
284
|
+
"SA" => ["SAU", "682", "SAR"],
|
285
|
+
"SB" => ["SLB", "090", "SBD"],
|
286
|
+
"SC" => ["SYC", "690", "SCR"],
|
287
|
+
"SD" => ["SDN", "729", "SDG"],
|
288
|
+
"SE" => ["SWE", "752", "SEK"],
|
289
|
+
"SG" => ["SGP", "702", "SGD"],
|
290
|
+
"SH" => ["SHN", "654", "SHP"],
|
291
|
+
"SI" => ["SVN", "705", "EUR"],
|
292
|
+
"SJ" => ["SJM", "744", "NOK"],
|
293
|
+
"SK" => ["SVK", "703", "EUR"],
|
294
|
+
"SL" => ["SLE", "694", "SLL"],
|
295
|
+
"SM" => ["SMR", "674", "EUR"],
|
296
|
+
"SN" => ["SEN", "686", "XOF"],
|
297
|
+
"SO" => ["SOM", "706", "SOS"],
|
298
|
+
"SR" => ["SUR", "740", "SRD"],
|
299
|
+
"SS" => ["SSD", "728", "SSP"],
|
300
|
+
"ST" => ["STP", "678", "STN"],
|
301
|
+
"SV" => ["SLV", "222", "USD"],
|
302
|
+
"SX" => ["SXM", "534", "ANG"],
|
303
|
+
"SY" => ["SYR", "760", "SYP"],
|
304
|
+
"SZ" => ["SWZ", "748", "SZL"],
|
305
|
+
"TA" => ["TAA", nil, "GBP"],
|
306
|
+
"TC" => ["TCA", "796", "USD"],
|
307
|
+
"TD" => ["TCD", "148", "XAF"],
|
308
|
+
"TF" => ["ATF", "260", "EUR"],
|
309
|
+
"TG" => ["TGO", "768", "XOF"],
|
310
|
+
"TH" => ["THA", "764", "THB"],
|
311
|
+
"TJ" => ["TJK", "762", "TJS"],
|
312
|
+
"TK" => ["TKL", "772", "NZD"],
|
313
|
+
"TL" => ["TLS", "626", "USD"],
|
314
|
+
"TM" => ["TKM", "795", "TMT"],
|
315
|
+
"TN" => ["TUN", "788", "TND"],
|
316
|
+
"TO" => ["TON", "776", "TOP"],
|
317
|
+
"TR" => ["TUR", "792", "TRY"],
|
318
|
+
"TT" => ["TTO", "780", "TTD"],
|
319
|
+
"TV" => ["TUV", "798", "AUD"],
|
320
|
+
"TW" => ["TWN", "158", "TWD"],
|
321
|
+
"TZ" => ["TZA", "834", "TZS"],
|
322
|
+
"UA" => ["UKR", "804", "UAH"],
|
323
|
+
"UG" => ["UGA", "800", "UGX"],
|
324
|
+
"UM" => ["UMI", "581", "USD"],
|
325
|
+
"US" => ["USA", "840", "USD"],
|
326
|
+
"UY" => ["URY", "858", "UYU"],
|
327
|
+
"UZ" => ["UZB", "860", "UZS"],
|
328
|
+
"VA" => ["VAT", "336", "EUR"],
|
329
|
+
"VC" => ["VCT", "670", "XCD"],
|
330
|
+
"VE" => ["VEN", "862", "VES"],
|
331
|
+
"VG" => ["VGB", "092", "GBP"],
|
332
|
+
"VI" => ["VIR", "850", "USD"],
|
333
|
+
"VN" => ["VNM", "704", "VND"],
|
334
|
+
"VU" => ["VUT", "548", "VUV"],
|
335
|
+
"WF" => ["WLF", "876", "XPF"],
|
336
|
+
"WS" => ["WSM", "882", "WST"],
|
337
|
+
"XK" => ["XKK", "983", "EUR"],
|
338
|
+
"YE" => ["YEM", "887", "YER"],
|
339
|
+
"YT" => ["MYT", "175", "EUR"],
|
340
|
+
"ZA" => ["ZAF", "710", "ZAR"],
|
341
|
+
"ZM" => ["ZMB", "894", "ZMW"],
|
342
|
+
"ZW" => ["ZWE", "716", "USD"]
|
343
|
+
}
|
344
|
+
end
|
345
|
+
end
|
346
|
+
|
347
|
+
attr_reader :country_code, :name, :three_letter_code, :numeric_code, :currency_code, :locale
|
348
|
+
|
349
|
+
def initialize(definition = {})
|
350
|
+
# Validate the presence of required properties.
|
351
|
+
[:country_code, :name, :locale].each do |required_property|
|
352
|
+
if definition[required_property].nil?
|
353
|
+
raise ArgumentError, "Missing required property #{required_property}."
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
357
|
+
@country_code = definition[:country_code]
|
358
|
+
@name = definition[:name]
|
359
|
+
@three_letter_code = definition[:three_letter_code]
|
360
|
+
@numeric_code = definition[:numeric_code]
|
361
|
+
@currency_code = definition[:currency_code]
|
362
|
+
@locale = definition[:locale]
|
363
|
+
end
|
364
|
+
|
365
|
+
# Gets the timezones.
|
366
|
+
#
|
367
|
+
# Note that a country can span more than one timezone.
|
368
|
+
# For example, Germany has ['Europe/Berlin', 'Europe/Busingen'].
|
369
|
+
def timezones
|
370
|
+
@timezones ||= TZInfo::Country.get(@country_code).zone_identifiers
|
371
|
+
end
|
372
|
+
|
373
|
+
# Gets the string representation of the Country.
|
374
|
+
def to_s
|
375
|
+
@country_code
|
376
|
+
end
|
377
|
+
end
|
378
|
+
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Addressing
|
4
|
+
class DefaultFormatter
|
5
|
+
DEFAULT_OPTIONS = {
|
6
|
+
locale: "en",
|
7
|
+
html: true,
|
8
|
+
html_tag: "p",
|
9
|
+
html_attributes: {translate: "no"}
|
10
|
+
}
|
11
|
+
|
12
|
+
def initialize(default_options = {})
|
13
|
+
assert_options(default_options)
|
14
|
+
|
15
|
+
@default_options = self.class::DEFAULT_OPTIONS.merge(default_options)
|
16
|
+
end
|
17
|
+
|
18
|
+
def format(address, options = {})
|
19
|
+
assert_options(options)
|
20
|
+
|
21
|
+
options = @default_options.merge(options)
|
22
|
+
address_format = AddressFormat.get(address.country_code)
|
23
|
+
|
24
|
+
# Add the country to the bottom or the top of the format string,
|
25
|
+
# depending on whether the format is minor-to-major or major-to-minor.
|
26
|
+
format_string = if Locale.match_candidates(address_format.locale, address.locale)
|
27
|
+
"%country\n" + address_format.local_format
|
28
|
+
else
|
29
|
+
address_format.format + "\n%country"
|
30
|
+
end
|
31
|
+
|
32
|
+
view = build_view(address, address_format, options)
|
33
|
+
view = render_view(view)
|
34
|
+
|
35
|
+
replacements = view.map { |key, element| ["%#{key}", element] }.to_h
|
36
|
+
output = format_string.gsub(/%[a-z1-9_]+/) { |m| replacements[m] }
|
37
|
+
output = clean_output(output)
|
38
|
+
|
39
|
+
if options[:html]
|
40
|
+
output = output.gsub(/\n/, "<br>\n")
|
41
|
+
# Add the HTML wrapper element.
|
42
|
+
output = render_html_element(value: "\n#{output}\n", html_tag: options[:html_tag], html_attributes: options[:html_attributes])
|
43
|
+
end
|
44
|
+
|
45
|
+
output
|
46
|
+
end
|
47
|
+
|
48
|
+
protected
|
49
|
+
|
50
|
+
# Builds the view for the given address.
|
51
|
+
def build_view(address, address_format, options)
|
52
|
+
countries = Country.list(options[:locale])
|
53
|
+
values = values(address, address_format).merge({"country" => countries.key?(address.country_code) ? countries[address.country_code] : address.country_code})
|
54
|
+
used_fields = address_format.used_fields + ["country"]
|
55
|
+
|
56
|
+
used_fields.map do |field|
|
57
|
+
[field, {html: options[:html], html_tag: "span", html_attributes: {class: field.tr("_", "-")}, value: values[field]}]
|
58
|
+
end.to_h
|
59
|
+
end
|
60
|
+
|
61
|
+
# Renders the given view.
|
62
|
+
def render_view(view)
|
63
|
+
view.map do |key, element|
|
64
|
+
next [key, ""] if element[:value].empty?
|
65
|
+
|
66
|
+
if element[:html]
|
67
|
+
element[:value] = CGI.escapeHTML(element[:value])
|
68
|
+
next [key, render_html_element(element)]
|
69
|
+
end
|
70
|
+
|
71
|
+
[key, element[:value].gsub(/<\/?[^>]*>/, "")]
|
72
|
+
end.to_h
|
73
|
+
end
|
74
|
+
|
75
|
+
def render_html_element(element)
|
76
|
+
attributes = render_html_attributes(element[:html_attributes])
|
77
|
+
|
78
|
+
"<#{element[:html_tag]} #{attributes}>#{element[:value]}</#{element[:html_tag]}>"
|
79
|
+
end
|
80
|
+
|
81
|
+
def render_html_attributes(attributes)
|
82
|
+
attributes.map do |name, value|
|
83
|
+
if value.is_a?(Array)
|
84
|
+
value = value.join(" ")
|
85
|
+
end
|
86
|
+
|
87
|
+
"#{name}=\"#{CGI.escapeHTML(value)}\""
|
88
|
+
end.join(" ")
|
89
|
+
end
|
90
|
+
|
91
|
+
# Removes empty lines, leading punctuation, excess whitespace.
|
92
|
+
def clean_output(output)
|
93
|
+
output.split("\n").map { |line| line.sub(/^[-,]+/, "").strip.gsub(/\s\s+/, " ") }.reject(&:empty?).join("\n")
|
94
|
+
end
|
95
|
+
|
96
|
+
# Gets the address values used to build the view.
|
97
|
+
def values(address, address_format)
|
98
|
+
values = AddressField.all.map { |_, field| [field, address.send(field)] }.to_h
|
99
|
+
subdivision_fields = address_format.used_subdivision_fields
|
100
|
+
|
101
|
+
# Replace the subdivision values with the names of any predefined ones.
|
102
|
+
subdivision_fields.each_with_index.inject([{}, []]) do |(original_values, parents), (field, index)|
|
103
|
+
if values[field].nil?
|
104
|
+
# This level is empty, so there can be no sublevels.
|
105
|
+
break
|
106
|
+
end
|
107
|
+
|
108
|
+
parents << (index > 0 ? original_values[subdivision_fields[index - 1]] : address.country_code)
|
109
|
+
|
110
|
+
subdivision = Subdivision.get(values[field], parents)
|
111
|
+
if subdivision.nil?
|
112
|
+
break
|
113
|
+
end
|
114
|
+
|
115
|
+
# Remember the original value so that it can be used for parents.
|
116
|
+
original_values[field] = values[field]
|
117
|
+
|
118
|
+
# Replace the value with the expected code.
|
119
|
+
use_local_name = Locale.match_candidates(address.locale, subdivision.locale)
|
120
|
+
values[field] = use_local_name ? subdivision.local_code : subdivision.code
|
121
|
+
|
122
|
+
if !subdivision.children?
|
123
|
+
# The current subdivision has no children, stop.
|
124
|
+
break
|
125
|
+
end
|
126
|
+
|
127
|
+
[original_values, parents]
|
128
|
+
end
|
129
|
+
|
130
|
+
values
|
131
|
+
end
|
132
|
+
|
133
|
+
private
|
134
|
+
|
135
|
+
# Validates the provided options.
|
136
|
+
#
|
137
|
+
# Ensures the absence of unknown keys, correct data types and values.
|
138
|
+
def assert_options(options)
|
139
|
+
options.each do |option, value|
|
140
|
+
unless self.class::DEFAULT_OPTIONS.key?(option)
|
141
|
+
raise ArgumentError, "Unrecognized option #{option}."
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
if options.key?(:html) && !options[:html].is_a?(TrueClass) && !options[:html].is_a?(FalseClass)
|
146
|
+
raise ArgumentError, "The option `html` must be a boolean."
|
147
|
+
end
|
148
|
+
|
149
|
+
if options.key?(:html_attributes) && !options[:html_attributes].is_a?(Hash)
|
150
|
+
raise ArgumentError, "The option `html_attributes` must be a hash."
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "addressing/enum"
|
4
|
+
|
5
|
+
module Addressing
|
6
|
+
# Enumerates available dependent locality types.
|
7
|
+
class DependentLocalityType < Enum
|
8
|
+
DISTRICT = "district"
|
9
|
+
NEIGHBORHOOD = "neighborhood"
|
10
|
+
VILLAGE_TOWNSHIP = "village_township"
|
11
|
+
SUBURB = "suburb"
|
12
|
+
TOWNLAND = "townland"
|
13
|
+
|
14
|
+
# Gets the default value.
|
15
|
+
def self.default
|
16
|
+
SUBURB
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Addressing
|
2
|
+
class Enum
|
3
|
+
class << self
|
4
|
+
@@values = {}
|
5
|
+
|
6
|
+
# Gets all available values.
|
7
|
+
def all
|
8
|
+
if !@@values.key?(name)
|
9
|
+
@@values[name] = constants.map { |constant| [constant, const_get(constant)] }.to_h
|
10
|
+
end
|
11
|
+
|
12
|
+
@@values[name]
|
13
|
+
end
|
14
|
+
|
15
|
+
# Gets the key of the provided value.
|
16
|
+
def key(value)
|
17
|
+
all.key(value)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Checks whether the provided value is defined.
|
21
|
+
def exists?(value)
|
22
|
+
all.has_value?(value)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Asserts that the provided value is defined.
|
26
|
+
def assert_exists(value)
|
27
|
+
raise ArgumentError, "#{value} is not a valid #{name} value." unless exists?(value)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Asserts that all provided values are defined.
|
31
|
+
def assert_all_exist(values)
|
32
|
+
values.each { |value| assert_exists(value) }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private_constant :Enum
|
38
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Addressing
|
2
|
+
class LazySubdivisions
|
3
|
+
def initialize(parents)
|
4
|
+
@parents = parents
|
5
|
+
@subdivisions = {}
|
6
|
+
@initialized = false
|
7
|
+
end
|
8
|
+
|
9
|
+
def [](key)
|
10
|
+
do_initialize unless @initialized
|
11
|
+
@subdivisions[key]
|
12
|
+
end
|
13
|
+
|
14
|
+
def any?
|
15
|
+
do_initialize unless @initialized
|
16
|
+
@subdivisions.any?
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def do_initialize
|
22
|
+
@initialized = true
|
23
|
+
@subdivisions = Subdivision.all(@parents)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|