data_maker 2.2.3 → 2.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (406) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/data_maker.gemspec +395 -7
  4. data/lib/data_maker.rb +29 -4
  5. data/lib/data_maker/cn/address.rb +200 -12
  6. data/lib/data_maker/data/cn/address/aba_districts +13 -0
  7. data/lib/data_maker/data/cn/address/akesu_districts +9 -0
  8. data/lib/data_maker/data/cn/address/alaer_districts +0 -0
  9. data/lib/data_maker/data/cn/address/alashanmeng_districts +3 -0
  10. data/lib/data_maker/data/cn/address/aletai_districts +7 -0
  11. data/lib/data_maker/data/cn/address/ali_districts +7 -0
  12. data/lib/data_maker/data/cn/address/anhui_cities +17 -0
  13. data/lib/data_maker/data/cn/address/ankang_districts +10 -0
  14. data/lib/data_maker/data/cn/address/anqing_districts +11 -0
  15. data/lib/data_maker/data/cn/address/anshan_districts +7 -0
  16. data/lib/data_maker/data/cn/address/anshun_districts +6 -0
  17. data/lib/data_maker/data/cn/address/anyang_districts +9 -0
  18. data/lib/data_maker/data/cn/address/aomen_cities +1 -0
  19. data/lib/data_maker/data/cn/address/aomen_districts +0 -0
  20. data/lib/data_maker/data/cn/address/baicheng_districts +5 -0
  21. data/lib/data_maker/data/cn/address/baise_districts +12 -0
  22. data/lib/data_maker/data/cn/address/baishan_districts +6 -0
  23. data/lib/data_maker/data/cn/address/baiyin_districts +5 -0
  24. data/lib/data_maker/data/cn/address/bangbu_districts +7 -0
  25. data/lib/data_maker/data/cn/address/baoding_districts +25 -0
  26. data/lib/data_maker/data/cn/address/baoji_districts +12 -0
  27. data/lib/data_maker/data/cn/address/baoshan_districts +5 -0
  28. data/lib/data_maker/data/cn/address/baotou_districts +9 -0
  29. data/lib/data_maker/data/cn/address/bayannaoer_districts +7 -0
  30. data/lib/data_maker/data/cn/address/bayinguolengmenggu_districts +9 -0
  31. data/lib/data_maker/data/cn/address/bazhong_districts +4 -0
  32. data/lib/data_maker/data/cn/address/beihai_districts +4 -0
  33. data/lib/data_maker/data/cn/address/beijing_cities +1 -0
  34. data/lib/data_maker/data/cn/address/beijing_districts +18 -0
  35. data/lib/data_maker/data/cn/address/benxi_districts +6 -0
  36. data/lib/data_maker/data/cn/address/bijie_districts +8 -0
  37. data/lib/data_maker/data/cn/address/binzhou_districts +7 -0
  38. data/lib/data_maker/data/cn/address/boertalamenggu_districts +3 -0
  39. data/lib/data_maker/data/cn/address/bozhou_districts +4 -0
  40. data/lib/data_maker/data/cn/address/cangzhou_districts +16 -0
  41. data/lib/data_maker/data/cn/address/changchun_districts +10 -0
  42. data/lib/data_maker/data/cn/address/changde_districts +9 -0
  43. data/lib/data_maker/data/cn/address/changdu_districts +11 -0
  44. data/lib/data_maker/data/cn/address/changjihuizu_districts +8 -0
  45. data/lib/data_maker/data/cn/address/changsha_districts +9 -0
  46. data/lib/data_maker/data/cn/address/changzhi_districts +13 -0
  47. data/lib/data_maker/data/cn/address/changzhou_districts +7 -0
  48. data/lib/data_maker/data/cn/address/chaohu_districts +5 -0
  49. data/lib/data_maker/data/cn/address/chaozhou_districts +3 -0
  50. data/lib/data_maker/data/cn/address/chengde_districts +11 -0
  51. data/lib/data_maker/data/cn/address/chengdu_districts +19 -0
  52. data/lib/data_maker/data/cn/address/chenyang_districts +13 -0
  53. data/lib/data_maker/data/cn/address/chenzhou_districts +11 -0
  54. data/lib/data_maker/data/cn/address/chifeng_districts +12 -0
  55. data/lib/data_maker/data/cn/address/chizhou_districts +4 -0
  56. data/lib/data_maker/data/cn/address/chongqing_cities +1 -0
  57. data/lib/data_maker/data/cn/address/chongqing_districts +40 -0
  58. data/lib/data_maker/data/cn/address/chongzuo_districts +7 -0
  59. data/lib/data_maker/data/cn/address/chuxiong_districts +10 -0
  60. data/lib/data_maker/data/cn/address/chuzhou_districts +8 -0
  61. data/lib/data_maker/data/cn/address/cities +351 -0
  62. data/lib/data_maker/data/cn/address/city_provinces +351 -0
  63. data/lib/data_maker/data/cn/address/dalian_districts +10 -0
  64. data/lib/data_maker/data/cn/address/dalibaizu_districts +12 -0
  65. data/lib/data_maker/data/cn/address/dandong_districts +6 -0
  66. data/lib/data_maker/data/cn/address/daqing_districts +9 -0
  67. data/lib/data_maker/data/cn/address/datong_districts +11 -0
  68. data/lib/data_maker/data/cn/address/daxinganling_districts +3 -0
  69. data/lib/data_maker/data/cn/address/dazhou_districts +7 -0
  70. data/lib/data_maker/data/cn/address/dehongdaizujingpozu_districts +5 -0
  71. data/lib/data_maker/data/cn/address/deyang_districts +6 -0
  72. data/lib/data_maker/data/cn/address/dezhou_districts +11 -0
  73. data/lib/data_maker/data/cn/address/dingxi_districts +7 -0
  74. data/lib/data_maker/data/cn/address/diqingcangzu_districts +3 -0
  75. data/lib/data_maker/data/cn/address/districts +2862 -0
  76. data/lib/data_maker/data/cn/address/dongguan_districts +0 -0
  77. data/lib/data_maker/data/cn/address/dongying_districts +5 -0
  78. data/lib/data_maker/data/cn/address/eerduosi_districts +8 -0
  79. data/lib/data_maker/data/cn/address/enshi_districts +8 -0
  80. data/lib/data_maker/data/cn/address/ezhou_districts +3 -0
  81. data/lib/data_maker/data/cn/address/fangchenggang_districts +4 -0
  82. data/lib/data_maker/data/cn/address/foshan_districts +5 -0
  83. data/lib/data_maker/data/cn/address/fujian_cities +9 -0
  84. data/lib/data_maker/data/cn/address/fushun_districts +7 -0
  85. data/lib/data_maker/data/cn/address/futian_districts +5 -0
  86. data/lib/data_maker/data/cn/address/fuxin_districts +7 -0
  87. data/lib/data_maker/data/cn/address/fuyang_districts +8 -0
  88. data/lib/data_maker/data/cn/address/fuzhou_districts +11 -0
  89. data/lib/data_maker/data/cn/address/gannancangzu_districts +8 -0
  90. data/lib/data_maker/data/cn/address/gansu_cities +14 -0
  91. data/lib/data_maker/data/cn/address/ganzhou_districts +18 -0
  92. data/lib/data_maker/data/cn/address/ganzi_districts +18 -0
  93. data/lib/data_maker/data/cn/address/guangan_districts +5 -0
  94. data/lib/data_maker/data/cn/address/guangdong_cities +21 -0
  95. data/lib/data_maker/data/cn/address/guangxi_cities +14 -0
  96. data/lib/data_maker/data/cn/address/guangyuan_districts +7 -0
  97. data/lib/data_maker/data/cn/address/guangzhou_districts +12 -0
  98. data/lib/data_maker/data/cn/address/guigang_districts +5 -0
  99. data/lib/data_maker/data/cn/address/guilin_districts +17 -0
  100. data/lib/data_maker/data/cn/address/guiyang_districts +10 -0
  101. data/lib/data_maker/data/cn/address/guizhou_cities +9 -0
  102. data/lib/data_maker/data/cn/address/guoluocangzu_districts +6 -0
  103. data/lib/data_maker/data/cn/address/guyuan_districts +5 -0
  104. data/lib/data_maker/data/cn/address/haerbin_districts +19 -0
  105. data/lib/data_maker/data/cn/address/haibeicangzu_districts +4 -0
  106. data/lib/data_maker/data/cn/address/haidong_districts +6 -0
  107. data/lib/data_maker/data/cn/address/haikou_districts +4 -0
  108. data/lib/data_maker/data/cn/address/hainan_cities +3 -0
  109. data/lib/data_maker/data/cn/address/hainancangzu_districts +5 -0
  110. data/lib/data_maker/data/cn/address/haiximengguzucangzu_districts +5 -0
  111. data/lib/data_maker/data/cn/address/hami_districts +3 -0
  112. data/lib/data_maker/data/cn/address/handan_districts +19 -0
  113. data/lib/data_maker/data/cn/address/hangzhou_districts +13 -0
  114. data/lib/data_maker/data/cn/address/hanzhong_districts +11 -0
  115. data/lib/data_maker/data/cn/address/hebei_cities +11 -0
  116. data/lib/data_maker/data/cn/address/hebi_districts +5 -0
  117. data/lib/data_maker/data/cn/address/hechi_districts +11 -0
  118. data/lib/data_maker/data/cn/address/hefei_districts +7 -0
  119. data/lib/data_maker/data/cn/address/hegang_districts +8 -0
  120. data/lib/data_maker/data/cn/address/heihe_districts +6 -0
  121. data/lib/data_maker/data/cn/address/heilongjiang_cities +13 -0
  122. data/lib/data_maker/data/cn/address/henan_cities +17 -0
  123. data/lib/data_maker/data/cn/address/hengshui_districts +11 -0
  124. data/lib/data_maker/data/cn/address/hengyang_districts +12 -0
  125. data/lib/data_maker/data/cn/address/hetian_districts +8 -0
  126. data/lib/data_maker/data/cn/address/heyuan_districts +6 -0
  127. data/lib/data_maker/data/cn/address/heze_districts +9 -0
  128. data/lib/data_maker/data/cn/address/hezhou_districts +4 -0
  129. data/lib/data_maker/data/cn/address/honghehanizuyizu_districts +13 -0
  130. data/lib/data_maker/data/cn/address/huaian_districts +8 -0
  131. data/lib/data_maker/data/cn/address/huaibei_districts +4 -0
  132. data/lib/data_maker/data/cn/address/huaihua_districts +12 -0
  133. data/lib/data_maker/data/cn/address/huainan_districts +6 -0
  134. data/lib/data_maker/data/cn/address/huanggang_districts +10 -0
  135. data/lib/data_maker/data/cn/address/huangnancangzu_districts +4 -0
  136. data/lib/data_maker/data/cn/address/huangshan_districts +7 -0
  137. data/lib/data_maker/data/cn/address/huangshi_districts +6 -0
  138. data/lib/data_maker/data/cn/address/hubei_cities +14 -0
  139. data/lib/data_maker/data/cn/address/huhehaote_districts +9 -0
  140. data/lib/data_maker/data/cn/address/huizhou_districts +5 -0
  141. data/lib/data_maker/data/cn/address/huludao_districts +6 -0
  142. data/lib/data_maker/data/cn/address/hulunbeier_districts +13 -0
  143. data/lib/data_maker/data/cn/address/hunan_cities +14 -0
  144. data/lib/data_maker/data/cn/address/huzhou_districts +5 -0
  145. data/lib/data_maker/data/cn/address/jiamusi_districts +11 -0
  146. data/lib/data_maker/data/cn/address/jian_districts +13 -0
  147. data/lib/data_maker/data/cn/address/jiangmen_districts +7 -0
  148. data/lib/data_maker/data/cn/address/jiangsu_cities +13 -0
  149. data/lib/data_maker/data/cn/address/jiangxi_cities +11 -0
  150. data/lib/data_maker/data/cn/address/jiaozuo_districts +11 -0
  151. data/lib/data_maker/data/cn/address/jiaxing_districts +7 -0
  152. data/lib/data_maker/data/cn/address/jiayi_districts +0 -0
  153. data/lib/data_maker/data/cn/address/jiayuguan_districts +0 -0
  154. data/lib/data_maker/data/cn/address/jieyang_districts +5 -0
  155. data/lib/data_maker/data/cn/address/jilin_cities +9 -0
  156. data/lib/data_maker/data/cn/address/jilin_districts +9 -0
  157. data/lib/data_maker/data/cn/address/jilong_districts +0 -0
  158. data/lib/data_maker/data/cn/address/jinan_districts +10 -0
  159. data/lib/data_maker/data/cn/address/jinchang_districts +2 -0
  160. data/lib/data_maker/data/cn/address/jincheng_districts +6 -0
  161. data/lib/data_maker/data/cn/address/jingdezhen_districts +4 -0
  162. data/lib/data_maker/data/cn/address/jingmen_districts +5 -0
  163. data/lib/data_maker/data/cn/address/jingzhou_districts +8 -0
  164. data/lib/data_maker/data/cn/address/jinhua_districts +9 -0
  165. data/lib/data_maker/data/cn/address/jining_districts +12 -0
  166. data/lib/data_maker/data/cn/address/jinzhong_districts +11 -0
  167. data/lib/data_maker/data/cn/address/jinzhou_districts +7 -0
  168. data/lib/data_maker/data/cn/address/jiujiang_districts +12 -0
  169. data/lib/data_maker/data/cn/address/jiuquan_districts +7 -0
  170. data/lib/data_maker/data/cn/address/jixi_districts +9 -0
  171. data/lib/data_maker/data/cn/address/kaifeng_districts +10 -0
  172. data/lib/data_maker/data/cn/address/kashi_districts +12 -0
  173. data/lib/data_maker/data/cn/address/kelamayi_districts +4 -0
  174. data/lib/data_maker/data/cn/address/kezilesukeerkezi_districts +4 -0
  175. data/lib/data_maker/data/cn/address/kunming_districts +14 -0
  176. data/lib/data_maker/data/cn/address/laibin_districts +6 -0
  177. data/lib/data_maker/data/cn/address/laiwu_districts +2 -0
  178. data/lib/data_maker/data/cn/address/langfang_districts +10 -0
  179. data/lib/data_maker/data/cn/address/lanzhou_districts +8 -0
  180. data/lib/data_maker/data/cn/address/lasa_districts +8 -0
  181. data/lib/data_maker/data/cn/address/leshan_districts +11 -0
  182. data/lib/data_maker/data/cn/address/liangshan_districts +17 -0
  183. data/lib/data_maker/data/cn/address/lianyungang_districts +7 -0
  184. data/lib/data_maker/data/cn/address/liaocheng_districts +8 -0
  185. data/lib/data_maker/data/cn/address/liaoning_cities +14 -0
  186. data/lib/data_maker/data/cn/address/liaoyang_districts +7 -0
  187. data/lib/data_maker/data/cn/address/liaoyuan_districts +4 -0
  188. data/lib/data_maker/data/cn/address/lijiang_districts +5 -0
  189. data/lib/data_maker/data/cn/address/lincang_districts +8 -0
  190. data/lib/data_maker/data/cn/address/linfen_districts +17 -0
  191. data/lib/data_maker/data/cn/address/linxiahuizu_districts +8 -0
  192. data/lib/data_maker/data/cn/address/linyi_districts +12 -0
  193. data/lib/data_maker/data/cn/address/linzhi_districts +7 -0
  194. data/lib/data_maker/data/cn/address/lishui_districts +9 -0
  195. data/lib/data_maker/data/cn/address/liuan_districts +7 -0
  196. data/lib/data_maker/data/cn/address/liupanshui_districts +4 -0
  197. data/lib/data_maker/data/cn/address/liuzhou_districts +10 -0
  198. data/lib/data_maker/data/cn/address/longnan_districts +9 -0
  199. data/lib/data_maker/data/cn/address/longyan_districts +7 -0
  200. data/lib/data_maker/data/cn/address/loudi_districts +5 -0
  201. data/lib/data_maker/data/cn/address/luoyang_districts +15 -0
  202. data/lib/data_maker/data/cn/address/luzhou_districts +7 -0
  203. data/lib/data_maker/data/cn/address/lvliang_districts +13 -0
  204. data/lib/data_maker/data/cn/address/maanshan_districts +4 -0
  205. data/lib/data_maker/data/cn/address/maoming_districts +6 -0
  206. data/lib/data_maker/data/cn/address/meishan_districts +6 -0
  207. data/lib/data_maker/data/cn/address/meizhou_districts +8 -0
  208. data/lib/data_maker/data/cn/address/mianyang_districts +9 -0
  209. data/lib/data_maker/data/cn/address/mudanjiang_districts +10 -0
  210. data/lib/data_maker/data/cn/address/nanchang_districts +9 -0
  211. data/lib/data_maker/data/cn/address/nanchong_districts +9 -0
  212. data/lib/data_maker/data/cn/address/nanjing_districts +13 -0
  213. data/lib/data_maker/data/cn/address/nanning_districts +12 -0
  214. data/lib/data_maker/data/cn/address/nanping_districts +10 -0
  215. data/lib/data_maker/data/cn/address/nantong_districts +8 -0
  216. data/lib/data_maker/data/cn/address/nanyang_districts +13 -0
  217. data/lib/data_maker/data/cn/address/naqu_districts +10 -0
  218. data/lib/data_maker/data/cn/address/neijiang_districts +5 -0
  219. data/lib/data_maker/data/cn/address/neimenggu_cities +12 -0
  220. data/lib/data_maker/data/cn/address/ningbo_districts +11 -0
  221. data/lib/data_maker/data/cn/address/ningde_districts +9 -0
  222. data/lib/data_maker/data/cn/address/ningxia_cities +5 -0
  223. data/lib/data_maker/data/cn/address/nujianglisuzu_districts +4 -0
  224. data/lib/data_maker/data/cn/address/panjin_districts +4 -0
  225. data/lib/data_maker/data/cn/address/panzhihua_districts +5 -0
  226. data/lib/data_maker/data/cn/address/pingdingshan_districts +10 -0
  227. data/lib/data_maker/data/cn/address/pingliang_districts +7 -0
  228. data/lib/data_maker/data/cn/address/pingxiang_districts +5 -0
  229. data/lib/data_maker/data/cn/address/province_postal_codes +34 -0
  230. data/lib/data_maker/data/cn/address/provinces +34 -0
  231. data/lib/data_maker/data/cn/address/puyang_districts +6 -0
  232. data/lib/data_maker/data/cn/address/qiandongnan_districts +16 -0
  233. data/lib/data_maker/data/cn/address/qiannanbu_districts +12 -0
  234. data/lib/data_maker/data/cn/address/qianxinan_districts +8 -0
  235. data/lib/data_maker/data/cn/address/qingdao_districts +12 -0
  236. data/lib/data_maker/data/cn/address/qinghai_cities +8 -0
  237. data/lib/data_maker/data/cn/address/qingyang_districts +8 -0
  238. data/lib/data_maker/data/cn/address/qingyuan_districts +8 -0
  239. data/lib/data_maker/data/cn/address/qinhuangdao_districts +7 -0
  240. data/lib/data_maker/data/cn/address/qinzhou_districts +4 -0
  241. data/lib/data_maker/data/cn/address/qiqihaer_districts +16 -0
  242. data/lib/data_maker/data/cn/address/qitaihe_districts +4 -0
  243. data/lib/data_maker/data/cn/address/quanzhou_districts +12 -0
  244. data/lib/data_maker/data/cn/address/qujing_districts +9 -0
  245. data/lib/data_maker/data/cn/address/quzhou_districts +6 -0
  246. data/lib/data_maker/data/cn/address/rikaze_districts +18 -0
  247. data/lib/data_maker/data/cn/address/rizhao_districts +4 -0
  248. data/lib/data_maker/data/cn/address/sanmenxia_districts +7 -0
  249. data/lib/data_maker/data/cn/address/sanming_districts +12 -0
  250. data/lib/data_maker/data/cn/address/sansha_districts +0 -0
  251. data/lib/data_maker/data/cn/address/sanya_districts +19 -0
  252. data/lib/data_maker/data/cn/address/shamen_districts +6 -0
  253. data/lib/data_maker/data/cn/address/shandong_cities +17 -0
  254. data/lib/data_maker/data/cn/address/shanghai_cities +1 -0
  255. data/lib/data_maker/data/cn/address/shanghai_districts +19 -0
  256. data/lib/data_maker/data/cn/address/shangluo_districts +7 -0
  257. data/lib/data_maker/data/cn/address/shangqiu_districts +9 -0
  258. data/lib/data_maker/data/cn/address/shangrao_districts +12 -0
  259. data/lib/data_maker/data/cn/address/shannan_districts +12 -0
  260. data/lib/data_maker/data/cn/address/shantou_districts +7 -0
  261. data/lib/data_maker/data/cn/address/shanwei_districts +4 -0
  262. data/lib/data_maker/data/cn/address/shanxi_cities +10 -0
  263. data/lib/data_maker/data/cn/address/shaoguan_districts +10 -0
  264. data/lib/data_maker/data/cn/address/shaoxing_districts +6 -0
  265. data/lib/data_maker/data/cn/address/shaoyang_districts +12 -0
  266. data/lib/data_maker/data/cn/address/shennongjia_districts +4 -0
  267. data/lib/data_maker/data/cn/address/shenzhen_districts +6 -0
  268. data/lib/data_maker/data/cn/address/shihezi_districts +0 -0
  269. data/lib/data_maker/data/cn/address/shijiazhuang_districts +23 -0
  270. data/lib/data_maker/data/cn/address/shiyan_districts +8 -0
  271. data/lib/data_maker/data/cn/address/shizuishan_districts +3 -0
  272. data/lib/data_maker/data/cn/address/shuangyashan_districts +8 -0
  273. data/lib/data_maker/data/cn/address/shuozhou_districts +6 -0
  274. data/lib/data_maker/data/cn/address/sichuan_cities +21 -0
  275. data/lib/data_maker/data/cn/address/simao_districts +10 -0
  276. data/lib/data_maker/data/cn/address/siping_districts +6 -0
  277. data/lib/data_maker/data/cn/address/songyuan_districts +5 -0
  278. data/lib/data_maker/data/{china → cn}/address/street_suffixes +0 -0
  279. data/lib/data_maker/data/cn/address/suihua_districts +10 -0
  280. data/lib/data_maker/data/cn/address/suining_districts +5 -0
  281. data/lib/data_maker/data/cn/address/suizhou_districts +2 -0
  282. data/lib/data_maker/data/cn/address/suqian_districts +5 -0
  283. data/lib/data_maker/data/cn/address/suzhou_districts +5 -0
  284. data/lib/data_maker/data/cn/address/tacheng_districts +7 -0
  285. data/lib/data_maker/data/cn/address/tahe_districts +5 -0
  286. data/lib/data_maker/data/cn/address/taian_districts +6 -0
  287. data/lib/data_maker/data/cn/address/taibei_districts +0 -0
  288. data/lib/data_maker/data/cn/address/tainan_districts +0 -0
  289. data/lib/data_maker/data/cn/address/taiwan_cities +6 -0
  290. data/lib/data_maker/data/cn/address/taiyuan_districts +10 -0
  291. data/lib/data_maker/data/cn/address/taizhong_districts +0 -0
  292. data/lib/data_maker/data/cn/address/taizhou_districts +9 -0
  293. data/lib/data_maker/data/cn/address/tangshan_districts +14 -0
  294. data/lib/data_maker/data/cn/address/tianjin_cities +1 -0
  295. data/lib/data_maker/data/cn/address/tianjin_districts +18 -0
  296. data/lib/data_maker/data/cn/address/tianshui_districts +7 -0
  297. data/lib/data_maker/data/cn/address/tieling_districts +7 -0
  298. data/lib/data_maker/data/cn/address/tongchuan_districts +4 -0
  299. data/lib/data_maker/data/cn/address/tonghua_districts +7 -0
  300. data/lib/data_maker/data/cn/address/tongliao_districts +8 -0
  301. data/lib/data_maker/data/cn/address/tongling_districts +4 -0
  302. data/lib/data_maker/data/cn/address/tongren_districts +10 -0
  303. data/lib/data_maker/data/cn/address/tulufan_districts +3 -0
  304. data/lib/data_maker/data/cn/address/tumushuke_districts +0 -0
  305. data/lib/data_maker/data/cn/address/weifang_districts +12 -0
  306. data/lib/data_maker/data/cn/address/weihai_districts +4 -0
  307. data/lib/data_maker/data/cn/address/weinan_districts +11 -0
  308. data/lib/data_maker/data/cn/address/wenshanzhuangzumiaozu_districts +8 -0
  309. data/lib/data_maker/data/cn/address/wenzhou_districts +11 -0
  310. data/lib/data_maker/data/cn/address/wuhai_districts +3 -0
  311. data/lib/data_maker/data/cn/address/wuhan_districts +13 -0
  312. data/lib/data_maker/data/cn/address/wuhu_districts +7 -0
  313. data/lib/data_maker/data/cn/address/wujiaqu_districts +0 -0
  314. data/lib/data_maker/data/cn/address/wulanchabu_districts +11 -0
  315. data/lib/data_maker/data/cn/address/wulumuqi_districts +8 -0
  316. data/lib/data_maker/data/cn/address/wuwei_districts +4 -0
  317. data/lib/data_maker/data/cn/address/wuxi_districts +8 -0
  318. data/lib/data_maker/data/cn/address/wuzhong_districts +4 -0
  319. data/lib/data_maker/data/cn/address/wuzhou_districts +7 -0
  320. data/lib/data_maker/data/cn/address/xian_districts +13 -0
  321. data/lib/data_maker/data/cn/address/xiangfan_districts +9 -0
  322. data/lib/data_maker/data/cn/address/xianggang_cities +1 -0
  323. data/lib/data_maker/data/cn/address/xianggang_districts +0 -0
  324. data/lib/data_maker/data/cn/address/xiangtan_districts +5 -0
  325. data/lib/data_maker/data/cn/address/xiangxi_districts +8 -0
  326. data/lib/data_maker/data/cn/address/xianning_districts +6 -0
  327. data/lib/data_maker/data/cn/address/xianyang_districts +14 -0
  328. data/lib/data_maker/data/cn/address/xiaogan_districts +7 -0
  329. data/lib/data_maker/data/cn/address/xilinguolemeng_districts +12 -0
  330. data/lib/data_maker/data/cn/address/xinganmeng_districts +6 -0
  331. data/lib/data_maker/data/cn/address/xingtai_districts +19 -0
  332. data/lib/data_maker/data/cn/address/xining_districts +7 -0
  333. data/lib/data_maker/data/cn/address/xinjiang_cities +18 -0
  334. data/lib/data_maker/data/cn/address/xinxiang_districts +12 -0
  335. data/lib/data_maker/data/cn/address/xinyang_districts +10 -0
  336. data/lib/data_maker/data/cn/address/xinyu_districts +2 -0
  337. data/lib/data_maker/data/cn/address/xinzhou_districts +14 -0
  338. data/lib/data_maker/data/cn/address/xinzhu_districts +0 -0
  339. data/lib/data_maker/data/cn/address/xishuangbannadaizu_districts +3 -0
  340. data/lib/data_maker/data/cn/address/xizang_cities +7 -0
  341. data/lib/data_maker/data/cn/address/xuancheng_districts +7 -0
  342. data/lib/data_maker/data/cn/address/xuchang_districts +6 -0
  343. data/lib/data_maker/data/cn/address/xuzhou_districts +11 -0
  344. data/lib/data_maker/data/cn/address/yaan_districts +8 -0
  345. data/lib/data_maker/data/cn/address/yanan_districts +13 -0
  346. data/lib/data_maker/data/cn/address/yanbian_districts +8 -0
  347. data/lib/data_maker/data/cn/address/yancheng_districts +9 -0
  348. data/lib/data_maker/data/cn/address/yangjiang_districts +4 -0
  349. data/lib/data_maker/data/cn/address/yangquan_districts +5 -0
  350. data/lib/data_maker/data/cn/address/yangzhou_districts +7 -0
  351. data/lib/data_maker/data/cn/address/yantai_districts +12 -0
  352. data/lib/data_maker/data/cn/address/yibin_districts +10 -0
  353. data/lib/data_maker/data/cn/address/yichang_districts +13 -0
  354. data/lib/data_maker/data/cn/address/yichun_districts +10 -0
  355. data/lib/data_maker/data/cn/address/yilihasake_districts +10 -0
  356. data/lib/data_maker/data/cn/address/yinchuan_districts +6 -0
  357. data/lib/data_maker/data/cn/address/yingkou_districts +6 -0
  358. data/lib/data_maker/data/cn/address/yingtan_districts +3 -0
  359. data/lib/data_maker/data/cn/address/yiyang_districts +6 -0
  360. data/lib/data_maker/data/cn/address/yongzhou_districts +11 -0
  361. data/lib/data_maker/data/cn/address/yueyang_districts +9 -0
  362. data/lib/data_maker/data/cn/address/yulin_districts +12 -0
  363. data/lib/data_maker/data/cn/address/yuncheng_districts +13 -0
  364. data/lib/data_maker/data/cn/address/yunfu_districts +5 -0
  365. data/lib/data_maker/data/cn/address/yunnan_cities +16 -0
  366. data/lib/data_maker/data/cn/address/yushucangzu_districts +6 -0
  367. data/lib/data_maker/data/cn/address/yuxi_districts +9 -0
  368. data/lib/data_maker/data/cn/address/zaozhuang_districts +6 -0
  369. data/lib/data_maker/data/cn/address/zhangjiajie_districts +4 -0
  370. data/lib/data_maker/data/cn/address/zhangjiakou_districts +17 -0
  371. data/lib/data_maker/data/cn/address/zhangye_districts +6 -0
  372. data/lib/data_maker/data/cn/address/zhangzhou_districts +11 -0
  373. data/lib/data_maker/data/cn/address/zhanjiang_districts +9 -0
  374. data/lib/data_maker/data/cn/address/zhaoqing_districts +8 -0
  375. data/lib/data_maker/data/cn/address/zhaotong_districts +11 -0
  376. data/lib/data_maker/data/cn/address/zhaoyang_districts +7 -0
  377. data/lib/data_maker/data/cn/address/zhejiang_cities +11 -0
  378. data/lib/data_maker/data/cn/address/zhengzhou_districts +12 -0
  379. data/lib/data_maker/data/cn/address/zhenjiang_districts +6 -0
  380. data/lib/data_maker/data/cn/address/zhongshan_districts +0 -0
  381. data/lib/data_maker/data/cn/address/zhongwei_districts +3 -0
  382. data/lib/data_maker/data/cn/address/zhoukou_districts +10 -0
  383. data/lib/data_maker/data/cn/address/zhoushan_districts +4 -0
  384. data/lib/data_maker/data/cn/address/zhuhai_districts +3 -0
  385. data/lib/data_maker/data/cn/address/zhumadian_districts +10 -0
  386. data/lib/data_maker/data/cn/address/zhuzhou_districts +9 -0
  387. data/lib/data_maker/data/cn/address/zibo_districts +8 -0
  388. data/lib/data_maker/data/cn/address/zigong_districts +6 -0
  389. data/lib/data_maker/data/cn/address/ziyang_districts +4 -0
  390. data/lib/data_maker/data/cn/address/zunyi_districts +14 -0
  391. data/lib/data_maker/data/cn/cities_chinese +351 -0
  392. data/lib/data_maker/data/cn/districts_chinese +2862 -0
  393. data/lib/data_maker/data/cn/provinces_chinese +34 -0
  394. data/lib/data_maker/locales/zh.yml +3253 -0
  395. data/lib/data_maker/modulator.rb +175 -0
  396. data/lib/data_maker/utilities/array_utilities.rb +2 -2
  397. data/lib/data_maker/version.rb +3 -0
  398. data/spec/lib/data_maker/cn/address_spec.rb +394 -0
  399. data/spec/lib/data_maker/data_maker_spec.rb +1 -1
  400. data/spec/spec_helper.rb +1 -8
  401. metadata +423 -9
  402. data/lib/data_maker/data/china/address/city_prefixes +0 -21
  403. data/lib/data_maker/data/china/address/city_suffixes +0 -19
  404. data/lib/data_maker/data/china/address/province_abbreviations +0 -33
  405. data/lib/data_maker/data/china/address/provinces +0 -33
  406. data/spec/lib/data_maker/support/matchers/phone_number_matcher.rb +0 -42
data/lib/data_maker.rb CHANGED
@@ -1,12 +1,28 @@
1
+ require 'i18n'
2
+ require 'data_maker/utilities/array_utilities'
3
+ require 'data_maker/utilities/module_utilities'
4
+
1
5
  module DataMaker
2
- VERSION = "2.2.3"
6
+ BASE_LIB_PATH = File.expand_path("..", __FILE__)
7
+
8
+ if I18n.respond_to?(:enforce_available_locales=)
9
+ I18n.enforce_available_locales = false
10
+ end
3
11
 
4
- require 'data_maker/utilities/array_utilities'
5
- require 'data_maker/utilities/module_utilities'
12
+ I18n.load_path += Dir[File.join(BASE_LIB_PATH, 'data_maker', 'locales', '*.yml')]
6
13
 
7
14
  extend ModuleUtilities
8
15
 
9
- BASE_LIB_PATH = File.expand_path("..", __FILE__)
16
+ class Config
17
+ @locale = nil
18
+
19
+ class << self
20
+ attr_writer :locale
21
+ def locale
22
+ @locale
23
+ end
24
+ end
25
+ end
10
26
 
11
27
  LETTERS = [*'a'..'z']
12
28
 
@@ -46,6 +62,15 @@ module DataMaker
46
62
  letterify(numerify(masks))
47
63
  end
48
64
 
65
+ def self.translate(*args)
66
+ options = args.last.is_a?(Hash) ? args.pop : {}
67
+ options[:locale] ||= DataMaker::Config.locale
68
+ options[:raise] = true
69
+ I18n.translate(*(args.push(options)))
70
+ rescue I18n::MissingTranslationData
71
+ I18n.translate(*(args.push(options.merge(locale: :en))))
72
+ end
73
+
49
74
  # Load all constants.
50
75
  Dir["#{BASE_LIB_PATH}/data_maker/**/*.rb"].sort.each do |f|
51
76
  require f
@@ -1,32 +1,220 @@
1
1
  module DataMaker
2
2
  module CN
3
3
  module Address
4
+ extend ModuleUtilities
5
+
4
6
  def self.street_address
5
- "lastname and street suffix"
7
+ GenerateAddress.new.street_address
6
8
  end
7
9
 
8
- def self.street_name
10
+ def self.city(province = nil)
11
+ address = GenerateAddress.new(province: province)
12
+ address.generate
13
+ address.city
9
14
  end
10
15
 
11
- def self.city
16
+ def self.province(city = nil)
17
+ address = GenerateAddress.new(city: city)
18
+ address.generate
19
+ address.province
12
20
  end
13
21
 
14
- def self.city_prefix
22
+ def self.postal_code(province = nil)
23
+ address = GenerateAddress.new(province: province)
24
+ address.generate
25
+ address.postal_code
15
26
  end
16
27
 
17
- def self.city_suffix
28
+ def self.address(province: nil, city: nil, district: nil, struct: false)
29
+ address = GenerateAddress.new(province: province, city: city, district: district)
30
+ struct ? address.address_struct : address.address_string
18
31
  end
19
32
 
20
- def self.unit_no
21
- end
33
+ class GenerateAddress
34
+ attr_accessor :province, :city, :district, :street_address, :locale, :options
22
35
 
23
- def self.postcode
24
- end
36
+ def initialize(*args)
37
+ self.options = (args.last.is_a?(::Hash) ? args.last : {}).delete_if { |k, v| v.nil? }
38
+ self.district = options[:district]
39
+ self.city = options[:city]
40
+ self.province = options[:province]
41
+ self.locale = options[:locale] || :zh
42
+ unless options.empty?
43
+ validate
44
+ end
45
+ end
25
46
 
26
- def self.province
27
- end
47
+ def generate
48
+ if options.empty?
49
+ # Generate a random address from a province
50
+ self.province = provinces.sample
51
+ self.city = province_cities.sample
52
+ self.district = city_districts.nil? ? nil : city_districts.sample
53
+ end
54
+
55
+ if options[:province] && options[:city].nil? && options[:district].nil?
56
+ self.city = province_cities.sample
57
+ self.district = city_districts.nil? ? nil : city_districts.sample
58
+ end
59
+
60
+ if options[:province].nil? && options[:city] && options[:district].nil?
61
+ self.province = city_province
62
+ self.district = city_districts.nil? ? nil : city_districts.sample
63
+ end
64
+ end
65
+
66
+ def street_address
67
+ [unit_no, street_name, street_suffix].join
68
+ end
69
+
70
+ def address_string
71
+ generate
72
+ translate
73
+ build_address
74
+ end
75
+
76
+ def address_struct
77
+ generate
78
+ translate
79
+ OpenStruct.new(street_address: street_address,
80
+ city: city,
81
+ district: district,
82
+ province: province,
83
+ postal_code: postal_code
84
+ )
85
+ end
86
+
87
+ def postal_code
88
+ postal_code = nil
89
+ province_postal_codes = DataMaker::CN::Address::PROVINCE_POSTAL_CODES
90
+ province_postal_codes.to_set.select do |province_postal_code|
91
+ p, pc = province_postal_code.split(",")
92
+ p == province ? postal_code = pc : nil
93
+ end
94
+ postal_code
95
+ end
96
+
97
+ private
98
+
99
+ def translate
100
+ DataMaker::Config.locale = locale
101
+ values = { province: province, city: city, district: district }
102
+ values.each do |key, value|
103
+ self.send("#{key}=", DataMaker.translate(['data_maker', 'address', key, value].join(".")))
104
+ end
105
+ end
106
+
107
+ def validate
108
+ if province
109
+ unless province_exists?
110
+ raise ArgumentError, "The province #{province} does not exist!"
111
+ end
112
+ end
113
+
114
+ if city
115
+ unless city_exists?
116
+ raise ArgumentError, "The city #{city} does not exist!"
117
+ end
118
+ end
119
+
120
+ if district
121
+ unless district_exists?
122
+ raise ArgumentError, "The district #{district} does not exist!"
123
+ end
124
+ end
125
+
126
+ if city.nil? && district
127
+ raise ArgumentError, "You must always pass a city with a district!"
128
+ end
129
+
130
+ if province && city
131
+ unless province_has_city?
132
+ raise ArgumentError, "The province #{province} does not have the city #{city}"
133
+ end
134
+ end
135
+
136
+ if city && district
137
+ unless city_has_district?
138
+ raise ArgumentError, "The city #{city} does not have the district #{district}"
139
+ end
140
+ end
141
+ end
142
+
143
+ def provinces
144
+ DataMaker::CN::Address::PROVINCES
145
+ end
146
+
147
+ def cities
148
+ DataMaker::CN::Address::CITIES
149
+ end
150
+
151
+ def districts
152
+ DataMaker::CN::Address::DISTRICTS
153
+ end
154
+
155
+ def build_address
156
+ address = []
157
+ address << street_address
158
+ address << city
159
+ address << district
160
+ address << province
161
+ address << postal_code
162
+ address.compact.join(", ")
163
+ end
164
+
165
+ def street_name
166
+ DataMaker::CN::Name::LAST_NAMES.sample
167
+ end
168
+
169
+ def street_suffix
170
+ DataMaker::CN::Address::STREET_SUFFIXES.sample
171
+ end
172
+
173
+ def unit_no
174
+ masks = "#" * rand(1..2)
175
+ DataMaker.numerify(masks)
176
+ end
177
+
178
+ def city_districts
179
+ raise ArgumentError, "Please pass a city!" if city.nil?
180
+ d = DataMaker::CN::Address.const_get("#{city}_districts".upcase)
181
+ d.empty? ? nil : d
182
+ end
183
+
184
+ def city_province
185
+ province = nil
186
+ city_provinces = DataMaker::CN::Address::CITY_PROVINCES
187
+ city_provinces.to_set.select do |city_province|
188
+ c, p = city_province.split(",")
189
+ c == city ? province = p : nil
190
+ end
191
+ province
192
+ end
193
+
194
+ def province_cities
195
+ raise ArgumentError, "Please pass a province!" if province.nil?
196
+ DataMaker::CN::Address.const_get("#{province}_cities".upcase)
197
+ end
198
+
199
+ def province_exists?
200
+ provinces.to_set.include?(province)
201
+ end
202
+
203
+ def city_exists?
204
+ cities.to_set.include?(city)
205
+ end
206
+
207
+ def district_exists?
208
+ districts.to_set.include?(district)
209
+ end
210
+
211
+ def province_has_city?
212
+ province_cities.to_set.include?(city)
213
+ end
28
214
 
29
- def self.full_address
215
+ def city_has_district?
216
+ city_districts.to_set.include?(district)
217
+ end
30
218
  end
31
219
  end
32
220
  end
@@ -0,0 +1,13 @@
1
+ wenchuan
2
+ li
3
+ mao
4
+ songpan
5
+ jiuzhaigou
6
+ jinchuan
7
+ xiaojin
8
+ heishui
9
+ maerkang
10
+ rangtang
11
+ aba
12
+ ruoergai
13
+ hongyuan
@@ -0,0 +1,9 @@
1
+ akesu
2
+ wensu
3
+ kuche
4
+ shaya
5
+ xinhe
6
+ baicheng
7
+ wushi
8
+ awati
9
+ keping
File without changes
@@ -0,0 +1,3 @@
1
+ alashanzuoqi
2
+ alashanyouqi
3
+ ejinaqi
@@ -0,0 +1,7 @@
1
+ aletai
2
+ buerjin
3
+ fuyun
4
+ fuhai
5
+ habahe
6
+ qinghe
7
+ jimunai
@@ -0,0 +1,7 @@
1
+ pulan
2
+ zhada
3
+ geer
4
+ ritu
5
+ geji
6
+ gaize
7
+ cuoqin
@@ -0,0 +1,17 @@
1
+ hefei
2
+ wuhu
3
+ bangbu
4
+ huainan
5
+ maanshan
6
+ huaibei
7
+ tongling
8
+ anqing
9
+ huangshan
10
+ chuzhou
11
+ fuyang
12
+ suzhou
13
+ chaohu
14
+ liuan
15
+ bozhou
16
+ chizhou
17
+ xuancheng
@@ -0,0 +1,10 @@
1
+ hanbin
2
+ hanyin
3
+ shiquan
4
+ ningshan
5
+ ziyang
6
+ langao
7
+ pingli
8
+ zhenping
9
+ xunyang
10
+ baihe
@@ -0,0 +1,11 @@
1
+ yingjiang
2
+ daguan
3
+ jiao
4
+ huaining
5
+ congyang
6
+ qianshan
7
+ taihu
8
+ susong
9
+ wangjiang
10
+ yuexi
11
+ tongcheng
@@ -0,0 +1,7 @@
1
+ tiedong
2
+ tiexi
3
+ lishan
4
+ qianshan
5
+ taian
6
+ xiuyanmanzu
7
+ haicheng
@@ -0,0 +1,6 @@
1
+ xixiu
2
+ pingba
3
+ puding
4
+ zhenningbuyizumiaozu
5
+ guanlingbuyizumiaozu
6
+ ziyunmiaozubuyizu
@@ -0,0 +1,9 @@
1
+ wenfeng
2
+ beiguan
3
+ yindu
4
+ longan
5
+ anyang
6
+ tangyin
7
+ hua
8
+ neihuang
9
+ linzhou
@@ -0,0 +1 @@
1
+ aomen
File without changes
@@ -0,0 +1,5 @@
1
+ taobei
2
+ zhenlai
3
+ tongyu
4
+ taonan
5
+ daan
@@ -0,0 +1,12 @@
1
+ youjiang
2
+ tianyang
3
+ tiandong
4
+ pingguo
5
+ debao
6
+ jingxi
7
+ napo
8
+ lingyun
9
+ leye
10
+ tianlin
11
+ xilin
12
+ longlingezu
@@ -0,0 +1,6 @@
1
+ badaojiang
2
+ fusong
3
+ jingyu
4
+ changbaizhaoxianzu
5
+ jiangyuan
6
+ linjiang
@@ -0,0 +1,5 @@
1
+ baiyin
2
+ pingchuan
3
+ jingyuan
4
+ huining
5
+ jingtai