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.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/data_maker.gemspec +395 -7
- data/lib/data_maker.rb +29 -4
- data/lib/data_maker/cn/address.rb +200 -12
- data/lib/data_maker/data/cn/address/aba_districts +13 -0
- data/lib/data_maker/data/cn/address/akesu_districts +9 -0
- data/lib/data_maker/data/cn/address/alaer_districts +0 -0
- data/lib/data_maker/data/cn/address/alashanmeng_districts +3 -0
- data/lib/data_maker/data/cn/address/aletai_districts +7 -0
- data/lib/data_maker/data/cn/address/ali_districts +7 -0
- data/lib/data_maker/data/cn/address/anhui_cities +17 -0
- data/lib/data_maker/data/cn/address/ankang_districts +10 -0
- data/lib/data_maker/data/cn/address/anqing_districts +11 -0
- data/lib/data_maker/data/cn/address/anshan_districts +7 -0
- data/lib/data_maker/data/cn/address/anshun_districts +6 -0
- data/lib/data_maker/data/cn/address/anyang_districts +9 -0
- data/lib/data_maker/data/cn/address/aomen_cities +1 -0
- data/lib/data_maker/data/cn/address/aomen_districts +0 -0
- data/lib/data_maker/data/cn/address/baicheng_districts +5 -0
- data/lib/data_maker/data/cn/address/baise_districts +12 -0
- data/lib/data_maker/data/cn/address/baishan_districts +6 -0
- data/lib/data_maker/data/cn/address/baiyin_districts +5 -0
- data/lib/data_maker/data/cn/address/bangbu_districts +7 -0
- data/lib/data_maker/data/cn/address/baoding_districts +25 -0
- data/lib/data_maker/data/cn/address/baoji_districts +12 -0
- data/lib/data_maker/data/cn/address/baoshan_districts +5 -0
- data/lib/data_maker/data/cn/address/baotou_districts +9 -0
- data/lib/data_maker/data/cn/address/bayannaoer_districts +7 -0
- data/lib/data_maker/data/cn/address/bayinguolengmenggu_districts +9 -0
- data/lib/data_maker/data/cn/address/bazhong_districts +4 -0
- data/lib/data_maker/data/cn/address/beihai_districts +4 -0
- data/lib/data_maker/data/cn/address/beijing_cities +1 -0
- data/lib/data_maker/data/cn/address/beijing_districts +18 -0
- data/lib/data_maker/data/cn/address/benxi_districts +6 -0
- data/lib/data_maker/data/cn/address/bijie_districts +8 -0
- data/lib/data_maker/data/cn/address/binzhou_districts +7 -0
- data/lib/data_maker/data/cn/address/boertalamenggu_districts +3 -0
- data/lib/data_maker/data/cn/address/bozhou_districts +4 -0
- data/lib/data_maker/data/cn/address/cangzhou_districts +16 -0
- data/lib/data_maker/data/cn/address/changchun_districts +10 -0
- data/lib/data_maker/data/cn/address/changde_districts +9 -0
- data/lib/data_maker/data/cn/address/changdu_districts +11 -0
- data/lib/data_maker/data/cn/address/changjihuizu_districts +8 -0
- data/lib/data_maker/data/cn/address/changsha_districts +9 -0
- data/lib/data_maker/data/cn/address/changzhi_districts +13 -0
- data/lib/data_maker/data/cn/address/changzhou_districts +7 -0
- data/lib/data_maker/data/cn/address/chaohu_districts +5 -0
- data/lib/data_maker/data/cn/address/chaozhou_districts +3 -0
- data/lib/data_maker/data/cn/address/chengde_districts +11 -0
- data/lib/data_maker/data/cn/address/chengdu_districts +19 -0
- data/lib/data_maker/data/cn/address/chenyang_districts +13 -0
- data/lib/data_maker/data/cn/address/chenzhou_districts +11 -0
- data/lib/data_maker/data/cn/address/chifeng_districts +12 -0
- data/lib/data_maker/data/cn/address/chizhou_districts +4 -0
- data/lib/data_maker/data/cn/address/chongqing_cities +1 -0
- data/lib/data_maker/data/cn/address/chongqing_districts +40 -0
- data/lib/data_maker/data/cn/address/chongzuo_districts +7 -0
- data/lib/data_maker/data/cn/address/chuxiong_districts +10 -0
- data/lib/data_maker/data/cn/address/chuzhou_districts +8 -0
- data/lib/data_maker/data/cn/address/cities +351 -0
- data/lib/data_maker/data/cn/address/city_provinces +351 -0
- data/lib/data_maker/data/cn/address/dalian_districts +10 -0
- data/lib/data_maker/data/cn/address/dalibaizu_districts +12 -0
- data/lib/data_maker/data/cn/address/dandong_districts +6 -0
- data/lib/data_maker/data/cn/address/daqing_districts +9 -0
- data/lib/data_maker/data/cn/address/datong_districts +11 -0
- data/lib/data_maker/data/cn/address/daxinganling_districts +3 -0
- data/lib/data_maker/data/cn/address/dazhou_districts +7 -0
- data/lib/data_maker/data/cn/address/dehongdaizujingpozu_districts +5 -0
- data/lib/data_maker/data/cn/address/deyang_districts +6 -0
- data/lib/data_maker/data/cn/address/dezhou_districts +11 -0
- data/lib/data_maker/data/cn/address/dingxi_districts +7 -0
- data/lib/data_maker/data/cn/address/diqingcangzu_districts +3 -0
- data/lib/data_maker/data/cn/address/districts +2862 -0
- data/lib/data_maker/data/cn/address/dongguan_districts +0 -0
- data/lib/data_maker/data/cn/address/dongying_districts +5 -0
- data/lib/data_maker/data/cn/address/eerduosi_districts +8 -0
- data/lib/data_maker/data/cn/address/enshi_districts +8 -0
- data/lib/data_maker/data/cn/address/ezhou_districts +3 -0
- data/lib/data_maker/data/cn/address/fangchenggang_districts +4 -0
- data/lib/data_maker/data/cn/address/foshan_districts +5 -0
- data/lib/data_maker/data/cn/address/fujian_cities +9 -0
- data/lib/data_maker/data/cn/address/fushun_districts +7 -0
- data/lib/data_maker/data/cn/address/futian_districts +5 -0
- data/lib/data_maker/data/cn/address/fuxin_districts +7 -0
- data/lib/data_maker/data/cn/address/fuyang_districts +8 -0
- data/lib/data_maker/data/cn/address/fuzhou_districts +11 -0
- data/lib/data_maker/data/cn/address/gannancangzu_districts +8 -0
- data/lib/data_maker/data/cn/address/gansu_cities +14 -0
- data/lib/data_maker/data/cn/address/ganzhou_districts +18 -0
- data/lib/data_maker/data/cn/address/ganzi_districts +18 -0
- data/lib/data_maker/data/cn/address/guangan_districts +5 -0
- data/lib/data_maker/data/cn/address/guangdong_cities +21 -0
- data/lib/data_maker/data/cn/address/guangxi_cities +14 -0
- data/lib/data_maker/data/cn/address/guangyuan_districts +7 -0
- data/lib/data_maker/data/cn/address/guangzhou_districts +12 -0
- data/lib/data_maker/data/cn/address/guigang_districts +5 -0
- data/lib/data_maker/data/cn/address/guilin_districts +17 -0
- data/lib/data_maker/data/cn/address/guiyang_districts +10 -0
- data/lib/data_maker/data/cn/address/guizhou_cities +9 -0
- data/lib/data_maker/data/cn/address/guoluocangzu_districts +6 -0
- data/lib/data_maker/data/cn/address/guyuan_districts +5 -0
- data/lib/data_maker/data/cn/address/haerbin_districts +19 -0
- data/lib/data_maker/data/cn/address/haibeicangzu_districts +4 -0
- data/lib/data_maker/data/cn/address/haidong_districts +6 -0
- data/lib/data_maker/data/cn/address/haikou_districts +4 -0
- data/lib/data_maker/data/cn/address/hainan_cities +3 -0
- data/lib/data_maker/data/cn/address/hainancangzu_districts +5 -0
- data/lib/data_maker/data/cn/address/haiximengguzucangzu_districts +5 -0
- data/lib/data_maker/data/cn/address/hami_districts +3 -0
- data/lib/data_maker/data/cn/address/handan_districts +19 -0
- data/lib/data_maker/data/cn/address/hangzhou_districts +13 -0
- data/lib/data_maker/data/cn/address/hanzhong_districts +11 -0
- data/lib/data_maker/data/cn/address/hebei_cities +11 -0
- data/lib/data_maker/data/cn/address/hebi_districts +5 -0
- data/lib/data_maker/data/cn/address/hechi_districts +11 -0
- data/lib/data_maker/data/cn/address/hefei_districts +7 -0
- data/lib/data_maker/data/cn/address/hegang_districts +8 -0
- data/lib/data_maker/data/cn/address/heihe_districts +6 -0
- data/lib/data_maker/data/cn/address/heilongjiang_cities +13 -0
- data/lib/data_maker/data/cn/address/henan_cities +17 -0
- data/lib/data_maker/data/cn/address/hengshui_districts +11 -0
- data/lib/data_maker/data/cn/address/hengyang_districts +12 -0
- data/lib/data_maker/data/cn/address/hetian_districts +8 -0
- data/lib/data_maker/data/cn/address/heyuan_districts +6 -0
- data/lib/data_maker/data/cn/address/heze_districts +9 -0
- data/lib/data_maker/data/cn/address/hezhou_districts +4 -0
- data/lib/data_maker/data/cn/address/honghehanizuyizu_districts +13 -0
- data/lib/data_maker/data/cn/address/huaian_districts +8 -0
- data/lib/data_maker/data/cn/address/huaibei_districts +4 -0
- data/lib/data_maker/data/cn/address/huaihua_districts +12 -0
- data/lib/data_maker/data/cn/address/huainan_districts +6 -0
- data/lib/data_maker/data/cn/address/huanggang_districts +10 -0
- data/lib/data_maker/data/cn/address/huangnancangzu_districts +4 -0
- data/lib/data_maker/data/cn/address/huangshan_districts +7 -0
- data/lib/data_maker/data/cn/address/huangshi_districts +6 -0
- data/lib/data_maker/data/cn/address/hubei_cities +14 -0
- data/lib/data_maker/data/cn/address/huhehaote_districts +9 -0
- data/lib/data_maker/data/cn/address/huizhou_districts +5 -0
- data/lib/data_maker/data/cn/address/huludao_districts +6 -0
- data/lib/data_maker/data/cn/address/hulunbeier_districts +13 -0
- data/lib/data_maker/data/cn/address/hunan_cities +14 -0
- data/lib/data_maker/data/cn/address/huzhou_districts +5 -0
- data/lib/data_maker/data/cn/address/jiamusi_districts +11 -0
- data/lib/data_maker/data/cn/address/jian_districts +13 -0
- data/lib/data_maker/data/cn/address/jiangmen_districts +7 -0
- data/lib/data_maker/data/cn/address/jiangsu_cities +13 -0
- data/lib/data_maker/data/cn/address/jiangxi_cities +11 -0
- data/lib/data_maker/data/cn/address/jiaozuo_districts +11 -0
- data/lib/data_maker/data/cn/address/jiaxing_districts +7 -0
- data/lib/data_maker/data/cn/address/jiayi_districts +0 -0
- data/lib/data_maker/data/cn/address/jiayuguan_districts +0 -0
- data/lib/data_maker/data/cn/address/jieyang_districts +5 -0
- data/lib/data_maker/data/cn/address/jilin_cities +9 -0
- data/lib/data_maker/data/cn/address/jilin_districts +9 -0
- data/lib/data_maker/data/cn/address/jilong_districts +0 -0
- data/lib/data_maker/data/cn/address/jinan_districts +10 -0
- data/lib/data_maker/data/cn/address/jinchang_districts +2 -0
- data/lib/data_maker/data/cn/address/jincheng_districts +6 -0
- data/lib/data_maker/data/cn/address/jingdezhen_districts +4 -0
- data/lib/data_maker/data/cn/address/jingmen_districts +5 -0
- data/lib/data_maker/data/cn/address/jingzhou_districts +8 -0
- data/lib/data_maker/data/cn/address/jinhua_districts +9 -0
- data/lib/data_maker/data/cn/address/jining_districts +12 -0
- data/lib/data_maker/data/cn/address/jinzhong_districts +11 -0
- data/lib/data_maker/data/cn/address/jinzhou_districts +7 -0
- data/lib/data_maker/data/cn/address/jiujiang_districts +12 -0
- data/lib/data_maker/data/cn/address/jiuquan_districts +7 -0
- data/lib/data_maker/data/cn/address/jixi_districts +9 -0
- data/lib/data_maker/data/cn/address/kaifeng_districts +10 -0
- data/lib/data_maker/data/cn/address/kashi_districts +12 -0
- data/lib/data_maker/data/cn/address/kelamayi_districts +4 -0
- data/lib/data_maker/data/cn/address/kezilesukeerkezi_districts +4 -0
- data/lib/data_maker/data/cn/address/kunming_districts +14 -0
- data/lib/data_maker/data/cn/address/laibin_districts +6 -0
- data/lib/data_maker/data/cn/address/laiwu_districts +2 -0
- data/lib/data_maker/data/cn/address/langfang_districts +10 -0
- data/lib/data_maker/data/cn/address/lanzhou_districts +8 -0
- data/lib/data_maker/data/cn/address/lasa_districts +8 -0
- data/lib/data_maker/data/cn/address/leshan_districts +11 -0
- data/lib/data_maker/data/cn/address/liangshan_districts +17 -0
- data/lib/data_maker/data/cn/address/lianyungang_districts +7 -0
- data/lib/data_maker/data/cn/address/liaocheng_districts +8 -0
- data/lib/data_maker/data/cn/address/liaoning_cities +14 -0
- data/lib/data_maker/data/cn/address/liaoyang_districts +7 -0
- data/lib/data_maker/data/cn/address/liaoyuan_districts +4 -0
- data/lib/data_maker/data/cn/address/lijiang_districts +5 -0
- data/lib/data_maker/data/cn/address/lincang_districts +8 -0
- data/lib/data_maker/data/cn/address/linfen_districts +17 -0
- data/lib/data_maker/data/cn/address/linxiahuizu_districts +8 -0
- data/lib/data_maker/data/cn/address/linyi_districts +12 -0
- data/lib/data_maker/data/cn/address/linzhi_districts +7 -0
- data/lib/data_maker/data/cn/address/lishui_districts +9 -0
- data/lib/data_maker/data/cn/address/liuan_districts +7 -0
- data/lib/data_maker/data/cn/address/liupanshui_districts +4 -0
- data/lib/data_maker/data/cn/address/liuzhou_districts +10 -0
- data/lib/data_maker/data/cn/address/longnan_districts +9 -0
- data/lib/data_maker/data/cn/address/longyan_districts +7 -0
- data/lib/data_maker/data/cn/address/loudi_districts +5 -0
- data/lib/data_maker/data/cn/address/luoyang_districts +15 -0
- data/lib/data_maker/data/cn/address/luzhou_districts +7 -0
- data/lib/data_maker/data/cn/address/lvliang_districts +13 -0
- data/lib/data_maker/data/cn/address/maanshan_districts +4 -0
- data/lib/data_maker/data/cn/address/maoming_districts +6 -0
- data/lib/data_maker/data/cn/address/meishan_districts +6 -0
- data/lib/data_maker/data/cn/address/meizhou_districts +8 -0
- data/lib/data_maker/data/cn/address/mianyang_districts +9 -0
- data/lib/data_maker/data/cn/address/mudanjiang_districts +10 -0
- data/lib/data_maker/data/cn/address/nanchang_districts +9 -0
- data/lib/data_maker/data/cn/address/nanchong_districts +9 -0
- data/lib/data_maker/data/cn/address/nanjing_districts +13 -0
- data/lib/data_maker/data/cn/address/nanning_districts +12 -0
- data/lib/data_maker/data/cn/address/nanping_districts +10 -0
- data/lib/data_maker/data/cn/address/nantong_districts +8 -0
- data/lib/data_maker/data/cn/address/nanyang_districts +13 -0
- data/lib/data_maker/data/cn/address/naqu_districts +10 -0
- data/lib/data_maker/data/cn/address/neijiang_districts +5 -0
- data/lib/data_maker/data/cn/address/neimenggu_cities +12 -0
- data/lib/data_maker/data/cn/address/ningbo_districts +11 -0
- data/lib/data_maker/data/cn/address/ningde_districts +9 -0
- data/lib/data_maker/data/cn/address/ningxia_cities +5 -0
- data/lib/data_maker/data/cn/address/nujianglisuzu_districts +4 -0
- data/lib/data_maker/data/cn/address/panjin_districts +4 -0
- data/lib/data_maker/data/cn/address/panzhihua_districts +5 -0
- data/lib/data_maker/data/cn/address/pingdingshan_districts +10 -0
- data/lib/data_maker/data/cn/address/pingliang_districts +7 -0
- data/lib/data_maker/data/cn/address/pingxiang_districts +5 -0
- data/lib/data_maker/data/cn/address/province_postal_codes +34 -0
- data/lib/data_maker/data/cn/address/provinces +34 -0
- data/lib/data_maker/data/cn/address/puyang_districts +6 -0
- data/lib/data_maker/data/cn/address/qiandongnan_districts +16 -0
- data/lib/data_maker/data/cn/address/qiannanbu_districts +12 -0
- data/lib/data_maker/data/cn/address/qianxinan_districts +8 -0
- data/lib/data_maker/data/cn/address/qingdao_districts +12 -0
- data/lib/data_maker/data/cn/address/qinghai_cities +8 -0
- data/lib/data_maker/data/cn/address/qingyang_districts +8 -0
- data/lib/data_maker/data/cn/address/qingyuan_districts +8 -0
- data/lib/data_maker/data/cn/address/qinhuangdao_districts +7 -0
- data/lib/data_maker/data/cn/address/qinzhou_districts +4 -0
- data/lib/data_maker/data/cn/address/qiqihaer_districts +16 -0
- data/lib/data_maker/data/cn/address/qitaihe_districts +4 -0
- data/lib/data_maker/data/cn/address/quanzhou_districts +12 -0
- data/lib/data_maker/data/cn/address/qujing_districts +9 -0
- data/lib/data_maker/data/cn/address/quzhou_districts +6 -0
- data/lib/data_maker/data/cn/address/rikaze_districts +18 -0
- data/lib/data_maker/data/cn/address/rizhao_districts +4 -0
- data/lib/data_maker/data/cn/address/sanmenxia_districts +7 -0
- data/lib/data_maker/data/cn/address/sanming_districts +12 -0
- data/lib/data_maker/data/cn/address/sansha_districts +0 -0
- data/lib/data_maker/data/cn/address/sanya_districts +19 -0
- data/lib/data_maker/data/cn/address/shamen_districts +6 -0
- data/lib/data_maker/data/cn/address/shandong_cities +17 -0
- data/lib/data_maker/data/cn/address/shanghai_cities +1 -0
- data/lib/data_maker/data/cn/address/shanghai_districts +19 -0
- data/lib/data_maker/data/cn/address/shangluo_districts +7 -0
- data/lib/data_maker/data/cn/address/shangqiu_districts +9 -0
- data/lib/data_maker/data/cn/address/shangrao_districts +12 -0
- data/lib/data_maker/data/cn/address/shannan_districts +12 -0
- data/lib/data_maker/data/cn/address/shantou_districts +7 -0
- data/lib/data_maker/data/cn/address/shanwei_districts +4 -0
- data/lib/data_maker/data/cn/address/shanxi_cities +10 -0
- data/lib/data_maker/data/cn/address/shaoguan_districts +10 -0
- data/lib/data_maker/data/cn/address/shaoxing_districts +6 -0
- data/lib/data_maker/data/cn/address/shaoyang_districts +12 -0
- data/lib/data_maker/data/cn/address/shennongjia_districts +4 -0
- data/lib/data_maker/data/cn/address/shenzhen_districts +6 -0
- data/lib/data_maker/data/cn/address/shihezi_districts +0 -0
- data/lib/data_maker/data/cn/address/shijiazhuang_districts +23 -0
- data/lib/data_maker/data/cn/address/shiyan_districts +8 -0
- data/lib/data_maker/data/cn/address/shizuishan_districts +3 -0
- data/lib/data_maker/data/cn/address/shuangyashan_districts +8 -0
- data/lib/data_maker/data/cn/address/shuozhou_districts +6 -0
- data/lib/data_maker/data/cn/address/sichuan_cities +21 -0
- data/lib/data_maker/data/cn/address/simao_districts +10 -0
- data/lib/data_maker/data/cn/address/siping_districts +6 -0
- data/lib/data_maker/data/cn/address/songyuan_districts +5 -0
- data/lib/data_maker/data/{china → cn}/address/street_suffixes +0 -0
- data/lib/data_maker/data/cn/address/suihua_districts +10 -0
- data/lib/data_maker/data/cn/address/suining_districts +5 -0
- data/lib/data_maker/data/cn/address/suizhou_districts +2 -0
- data/lib/data_maker/data/cn/address/suqian_districts +5 -0
- data/lib/data_maker/data/cn/address/suzhou_districts +5 -0
- data/lib/data_maker/data/cn/address/tacheng_districts +7 -0
- data/lib/data_maker/data/cn/address/tahe_districts +5 -0
- data/lib/data_maker/data/cn/address/taian_districts +6 -0
- data/lib/data_maker/data/cn/address/taibei_districts +0 -0
- data/lib/data_maker/data/cn/address/tainan_districts +0 -0
- data/lib/data_maker/data/cn/address/taiwan_cities +6 -0
- data/lib/data_maker/data/cn/address/taiyuan_districts +10 -0
- data/lib/data_maker/data/cn/address/taizhong_districts +0 -0
- data/lib/data_maker/data/cn/address/taizhou_districts +9 -0
- data/lib/data_maker/data/cn/address/tangshan_districts +14 -0
- data/lib/data_maker/data/cn/address/tianjin_cities +1 -0
- data/lib/data_maker/data/cn/address/tianjin_districts +18 -0
- data/lib/data_maker/data/cn/address/tianshui_districts +7 -0
- data/lib/data_maker/data/cn/address/tieling_districts +7 -0
- data/lib/data_maker/data/cn/address/tongchuan_districts +4 -0
- data/lib/data_maker/data/cn/address/tonghua_districts +7 -0
- data/lib/data_maker/data/cn/address/tongliao_districts +8 -0
- data/lib/data_maker/data/cn/address/tongling_districts +4 -0
- data/lib/data_maker/data/cn/address/tongren_districts +10 -0
- data/lib/data_maker/data/cn/address/tulufan_districts +3 -0
- data/lib/data_maker/data/cn/address/tumushuke_districts +0 -0
- data/lib/data_maker/data/cn/address/weifang_districts +12 -0
- data/lib/data_maker/data/cn/address/weihai_districts +4 -0
- data/lib/data_maker/data/cn/address/weinan_districts +11 -0
- data/lib/data_maker/data/cn/address/wenshanzhuangzumiaozu_districts +8 -0
- data/lib/data_maker/data/cn/address/wenzhou_districts +11 -0
- data/lib/data_maker/data/cn/address/wuhai_districts +3 -0
- data/lib/data_maker/data/cn/address/wuhan_districts +13 -0
- data/lib/data_maker/data/cn/address/wuhu_districts +7 -0
- data/lib/data_maker/data/cn/address/wujiaqu_districts +0 -0
- data/lib/data_maker/data/cn/address/wulanchabu_districts +11 -0
- data/lib/data_maker/data/cn/address/wulumuqi_districts +8 -0
- data/lib/data_maker/data/cn/address/wuwei_districts +4 -0
- data/lib/data_maker/data/cn/address/wuxi_districts +8 -0
- data/lib/data_maker/data/cn/address/wuzhong_districts +4 -0
- data/lib/data_maker/data/cn/address/wuzhou_districts +7 -0
- data/lib/data_maker/data/cn/address/xian_districts +13 -0
- data/lib/data_maker/data/cn/address/xiangfan_districts +9 -0
- data/lib/data_maker/data/cn/address/xianggang_cities +1 -0
- data/lib/data_maker/data/cn/address/xianggang_districts +0 -0
- data/lib/data_maker/data/cn/address/xiangtan_districts +5 -0
- data/lib/data_maker/data/cn/address/xiangxi_districts +8 -0
- data/lib/data_maker/data/cn/address/xianning_districts +6 -0
- data/lib/data_maker/data/cn/address/xianyang_districts +14 -0
- data/lib/data_maker/data/cn/address/xiaogan_districts +7 -0
- data/lib/data_maker/data/cn/address/xilinguolemeng_districts +12 -0
- data/lib/data_maker/data/cn/address/xinganmeng_districts +6 -0
- data/lib/data_maker/data/cn/address/xingtai_districts +19 -0
- data/lib/data_maker/data/cn/address/xining_districts +7 -0
- data/lib/data_maker/data/cn/address/xinjiang_cities +18 -0
- data/lib/data_maker/data/cn/address/xinxiang_districts +12 -0
- data/lib/data_maker/data/cn/address/xinyang_districts +10 -0
- data/lib/data_maker/data/cn/address/xinyu_districts +2 -0
- data/lib/data_maker/data/cn/address/xinzhou_districts +14 -0
- data/lib/data_maker/data/cn/address/xinzhu_districts +0 -0
- data/lib/data_maker/data/cn/address/xishuangbannadaizu_districts +3 -0
- data/lib/data_maker/data/cn/address/xizang_cities +7 -0
- data/lib/data_maker/data/cn/address/xuancheng_districts +7 -0
- data/lib/data_maker/data/cn/address/xuchang_districts +6 -0
- data/lib/data_maker/data/cn/address/xuzhou_districts +11 -0
- data/lib/data_maker/data/cn/address/yaan_districts +8 -0
- data/lib/data_maker/data/cn/address/yanan_districts +13 -0
- data/lib/data_maker/data/cn/address/yanbian_districts +8 -0
- data/lib/data_maker/data/cn/address/yancheng_districts +9 -0
- data/lib/data_maker/data/cn/address/yangjiang_districts +4 -0
- data/lib/data_maker/data/cn/address/yangquan_districts +5 -0
- data/lib/data_maker/data/cn/address/yangzhou_districts +7 -0
- data/lib/data_maker/data/cn/address/yantai_districts +12 -0
- data/lib/data_maker/data/cn/address/yibin_districts +10 -0
- data/lib/data_maker/data/cn/address/yichang_districts +13 -0
- data/lib/data_maker/data/cn/address/yichun_districts +10 -0
- data/lib/data_maker/data/cn/address/yilihasake_districts +10 -0
- data/lib/data_maker/data/cn/address/yinchuan_districts +6 -0
- data/lib/data_maker/data/cn/address/yingkou_districts +6 -0
- data/lib/data_maker/data/cn/address/yingtan_districts +3 -0
- data/lib/data_maker/data/cn/address/yiyang_districts +6 -0
- data/lib/data_maker/data/cn/address/yongzhou_districts +11 -0
- data/lib/data_maker/data/cn/address/yueyang_districts +9 -0
- data/lib/data_maker/data/cn/address/yulin_districts +12 -0
- data/lib/data_maker/data/cn/address/yuncheng_districts +13 -0
- data/lib/data_maker/data/cn/address/yunfu_districts +5 -0
- data/lib/data_maker/data/cn/address/yunnan_cities +16 -0
- data/lib/data_maker/data/cn/address/yushucangzu_districts +6 -0
- data/lib/data_maker/data/cn/address/yuxi_districts +9 -0
- data/lib/data_maker/data/cn/address/zaozhuang_districts +6 -0
- data/lib/data_maker/data/cn/address/zhangjiajie_districts +4 -0
- data/lib/data_maker/data/cn/address/zhangjiakou_districts +17 -0
- data/lib/data_maker/data/cn/address/zhangye_districts +6 -0
- data/lib/data_maker/data/cn/address/zhangzhou_districts +11 -0
- data/lib/data_maker/data/cn/address/zhanjiang_districts +9 -0
- data/lib/data_maker/data/cn/address/zhaoqing_districts +8 -0
- data/lib/data_maker/data/cn/address/zhaotong_districts +11 -0
- data/lib/data_maker/data/cn/address/zhaoyang_districts +7 -0
- data/lib/data_maker/data/cn/address/zhejiang_cities +11 -0
- data/lib/data_maker/data/cn/address/zhengzhou_districts +12 -0
- data/lib/data_maker/data/cn/address/zhenjiang_districts +6 -0
- data/lib/data_maker/data/cn/address/zhongshan_districts +0 -0
- data/lib/data_maker/data/cn/address/zhongwei_districts +3 -0
- data/lib/data_maker/data/cn/address/zhoukou_districts +10 -0
- data/lib/data_maker/data/cn/address/zhoushan_districts +4 -0
- data/lib/data_maker/data/cn/address/zhuhai_districts +3 -0
- data/lib/data_maker/data/cn/address/zhumadian_districts +10 -0
- data/lib/data_maker/data/cn/address/zhuzhou_districts +9 -0
- data/lib/data_maker/data/cn/address/zibo_districts +8 -0
- data/lib/data_maker/data/cn/address/zigong_districts +6 -0
- data/lib/data_maker/data/cn/address/ziyang_districts +4 -0
- data/lib/data_maker/data/cn/address/zunyi_districts +14 -0
- data/lib/data_maker/data/cn/cities_chinese +351 -0
- data/lib/data_maker/data/cn/districts_chinese +2862 -0
- data/lib/data_maker/data/cn/provinces_chinese +34 -0
- data/lib/data_maker/locales/zh.yml +3253 -0
- data/lib/data_maker/modulator.rb +175 -0
- data/lib/data_maker/utilities/array_utilities.rb +2 -2
- data/lib/data_maker/version.rb +3 -0
- data/spec/lib/data_maker/cn/address_spec.rb +394 -0
- data/spec/lib/data_maker/data_maker_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -8
- metadata +423 -9
- data/lib/data_maker/data/china/address/city_prefixes +0 -21
- data/lib/data_maker/data/china/address/city_suffixes +0 -19
- data/lib/data_maker/data/china/address/province_abbreviations +0 -33
- data/lib/data_maker/data/china/address/provinces +0 -33
- 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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
7
|
+
GenerateAddress.new.street_address
|
6
8
|
end
|
7
9
|
|
8
|
-
def self.
|
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.
|
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.
|
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
|
-
|
21
|
-
|
33
|
+
class GenerateAddress
|
34
|
+
attr_accessor :province, :city, :district, :street_address, :locale, :options
|
22
35
|
|
23
|
-
|
24
|
-
|
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
|
-
|
27
|
-
|
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
|
-
|
215
|
+
def city_has_district?
|
216
|
+
city_districts.to_set.include?(district)
|
217
|
+
end
|
30
218
|
end
|
31
219
|
end
|
32
220
|
end
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
aomen
|
File without changes
|