basho 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (991) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +8 -0
  3. data/CHANGELOG.md +49 -0
  4. data/README.ja.md +276 -107
  5. data/README.md +277 -108
  6. data/app/assets/javascripts/controllers/basho/auto_fill_controller.js +17 -22
  7. data/app/controllers/basho/postal_codes_controller.rb +1 -2
  8. data/app/helpers/basho/form_helper.rb +3 -13
  9. data/config/routes.rb +0 -3
  10. data/data/cities/06.json +1 -1
  11. data/data/cities/10.json +1 -1
  12. data/data/cities/11.json +3 -3
  13. data/data/cities/12.json +3 -3
  14. data/data/cities/14.json +1 -1
  15. data/data/cities/23.json +1 -2
  16. data/data/cities/25.json +1 -1
  17. data/data/cities/27.json +2 -3
  18. data/data/cities/29.json +1 -1
  19. data/data/cities/33.json +2 -2
  20. data/data/cities/34.json +1 -2
  21. data/data/cities/47.json +1 -1
  22. data/data/postal_codes/001.json +1 -1
  23. data/data/postal_codes/002.json +1 -1
  24. data/data/postal_codes/003.json +1 -1
  25. data/data/postal_codes/004.json +1 -1
  26. data/data/postal_codes/005.json +1 -1
  27. data/data/postal_codes/006.json +1 -1
  28. data/data/postal_codes/007.json +1 -1
  29. data/data/postal_codes/010.json +1 -1
  30. data/data/postal_codes/011.json +1 -1
  31. data/data/postal_codes/012.json +1 -1
  32. data/data/postal_codes/013.json +1 -1
  33. data/data/postal_codes/014.json +1 -1
  34. data/data/postal_codes/015.json +1 -1
  35. data/data/postal_codes/016.json +1 -1
  36. data/data/postal_codes/017.json +1 -1
  37. data/data/postal_codes/018.json +1 -1
  38. data/data/postal_codes/019.json +1 -1
  39. data/data/postal_codes/020.json +1 -1
  40. data/data/postal_codes/021.json +1 -1
  41. data/data/postal_codes/022.json +1 -1
  42. data/data/postal_codes/023.json +1 -1
  43. data/data/postal_codes/024.json +1 -1
  44. data/data/postal_codes/025.json +1 -1
  45. data/data/postal_codes/026.json +1 -1
  46. data/data/postal_codes/027.json +1 -1
  47. data/data/postal_codes/028.json +1 -1
  48. data/data/postal_codes/029.json +1 -1
  49. data/data/postal_codes/030.json +1 -1
  50. data/data/postal_codes/031.json +1 -1
  51. data/data/postal_codes/033.json +1 -1
  52. data/data/postal_codes/034.json +1 -1
  53. data/data/postal_codes/035.json +1 -1
  54. data/data/postal_codes/036.json +1 -1
  55. data/data/postal_codes/037.json +1 -1
  56. data/data/postal_codes/038.json +1 -1
  57. data/data/postal_codes/039.json +1 -1
  58. data/data/postal_codes/040.json +1 -1
  59. data/data/postal_codes/041.json +1 -1
  60. data/data/postal_codes/042.json +1 -1
  61. data/data/postal_codes/043.json +1 -1
  62. data/data/postal_codes/044.json +1 -1
  63. data/data/postal_codes/045.json +1 -1
  64. data/data/postal_codes/046.json +1 -1
  65. data/data/postal_codes/047.json +1 -1
  66. data/data/postal_codes/048.json +1 -1
  67. data/data/postal_codes/049.json +1 -1
  68. data/data/postal_codes/050.json +1 -1
  69. data/data/postal_codes/051.json +1 -1
  70. data/data/postal_codes/052.json +1 -1
  71. data/data/postal_codes/053.json +1 -1
  72. data/data/postal_codes/054.json +1 -1
  73. data/data/postal_codes/055.json +1 -1
  74. data/data/postal_codes/056.json +1 -1
  75. data/data/postal_codes/057.json +1 -1
  76. data/data/postal_codes/058.json +1 -1
  77. data/data/postal_codes/059.json +1 -1
  78. data/data/postal_codes/060.json +1 -1
  79. data/data/postal_codes/061.json +1 -1
  80. data/data/postal_codes/062.json +1 -1
  81. data/data/postal_codes/063.json +1 -1
  82. data/data/postal_codes/064.json +1 -1
  83. data/data/postal_codes/065.json +1 -1
  84. data/data/postal_codes/066.json +1 -1
  85. data/data/postal_codes/067.json +1 -1
  86. data/data/postal_codes/068.json +1 -1
  87. data/data/postal_codes/069.json +1 -1
  88. data/data/postal_codes/070.json +1 -1
  89. data/data/postal_codes/071.json +1 -1
  90. data/data/postal_codes/072.json +1 -1
  91. data/data/postal_codes/073.json +1 -1
  92. data/data/postal_codes/074.json +1 -1
  93. data/data/postal_codes/075.json +1 -1
  94. data/data/postal_codes/076.json +1 -1
  95. data/data/postal_codes/077.json +1 -1
  96. data/data/postal_codes/078.json +1 -1
  97. data/data/postal_codes/079.json +1 -1
  98. data/data/postal_codes/080.json +1 -1
  99. data/data/postal_codes/081.json +1 -1
  100. data/data/postal_codes/082.json +1 -1
  101. data/data/postal_codes/083.json +1 -1
  102. data/data/postal_codes/084.json +1 -1
  103. data/data/postal_codes/085.json +1 -1
  104. data/data/postal_codes/086.json +1 -1
  105. data/data/postal_codes/087.json +1 -1
  106. data/data/postal_codes/088.json +1 -1
  107. data/data/postal_codes/089.json +1 -1
  108. data/data/postal_codes/090.json +1 -1
  109. data/data/postal_codes/091.json +1 -1
  110. data/data/postal_codes/092.json +1 -1
  111. data/data/postal_codes/093.json +1 -1
  112. data/data/postal_codes/094.json +1 -1
  113. data/data/postal_codes/095.json +1 -1
  114. data/data/postal_codes/096.json +1 -1
  115. data/data/postal_codes/097.json +1 -1
  116. data/data/postal_codes/098.json +1 -1
  117. data/data/postal_codes/099.json +1 -1
  118. data/data/postal_codes/100.json +1 -1
  119. data/data/postal_codes/101.json +1 -1
  120. data/data/postal_codes/102.json +1 -1
  121. data/data/postal_codes/103.json +1 -1
  122. data/data/postal_codes/104.json +1 -1
  123. data/data/postal_codes/105.json +1 -1
  124. data/data/postal_codes/106.json +1 -1
  125. data/data/postal_codes/107.json +1 -1
  126. data/data/postal_codes/108.json +1 -1
  127. data/data/postal_codes/110.json +1 -1
  128. data/data/postal_codes/111.json +1 -1
  129. data/data/postal_codes/112.json +1 -1
  130. data/data/postal_codes/113.json +1 -1
  131. data/data/postal_codes/114.json +1 -1
  132. data/data/postal_codes/115.json +1 -1
  133. data/data/postal_codes/116.json +1 -1
  134. data/data/postal_codes/120.json +1 -1
  135. data/data/postal_codes/121.json +1 -1
  136. data/data/postal_codes/123.json +1 -1
  137. data/data/postal_codes/124.json +1 -1
  138. data/data/postal_codes/125.json +1 -1
  139. data/data/postal_codes/130.json +1 -1
  140. data/data/postal_codes/131.json +1 -1
  141. data/data/postal_codes/132.json +1 -1
  142. data/data/postal_codes/133.json +1 -1
  143. data/data/postal_codes/134.json +1 -1
  144. data/data/postal_codes/135.json +1 -1
  145. data/data/postal_codes/136.json +1 -1
  146. data/data/postal_codes/140.json +1 -1
  147. data/data/postal_codes/141.json +1 -1
  148. data/data/postal_codes/142.json +1 -1
  149. data/data/postal_codes/143.json +1 -1
  150. data/data/postal_codes/144.json +1 -1
  151. data/data/postal_codes/145.json +1 -1
  152. data/data/postal_codes/146.json +1 -1
  153. data/data/postal_codes/150.json +1 -1
  154. data/data/postal_codes/151.json +1 -1
  155. data/data/postal_codes/152.json +1 -1
  156. data/data/postal_codes/153.json +1 -1
  157. data/data/postal_codes/154.json +1 -1
  158. data/data/postal_codes/155.json +1 -1
  159. data/data/postal_codes/156.json +1 -1
  160. data/data/postal_codes/157.json +1 -1
  161. data/data/postal_codes/158.json +1 -1
  162. data/data/postal_codes/160.json +1 -1
  163. data/data/postal_codes/161.json +1 -1
  164. data/data/postal_codes/162.json +1 -1
  165. data/data/postal_codes/163.json +1 -1
  166. data/data/postal_codes/164.json +1 -1
  167. data/data/postal_codes/165.json +1 -1
  168. data/data/postal_codes/166.json +1 -1
  169. data/data/postal_codes/167.json +1 -1
  170. data/data/postal_codes/168.json +1 -1
  171. data/data/postal_codes/169.json +1 -1
  172. data/data/postal_codes/170.json +1 -1
  173. data/data/postal_codes/171.json +1 -1
  174. data/data/postal_codes/173.json +1 -1
  175. data/data/postal_codes/174.json +1 -1
  176. data/data/postal_codes/175.json +1 -1
  177. data/data/postal_codes/176.json +1 -1
  178. data/data/postal_codes/177.json +1 -1
  179. data/data/postal_codes/178.json +1 -1
  180. data/data/postal_codes/179.json +1 -1
  181. data/data/postal_codes/180.json +1 -1
  182. data/data/postal_codes/181.json +1 -1
  183. data/data/postal_codes/182.json +1 -1
  184. data/data/postal_codes/183.json +1 -1
  185. data/data/postal_codes/184.json +1 -1
  186. data/data/postal_codes/185.json +1 -1
  187. data/data/postal_codes/186.json +1 -1
  188. data/data/postal_codes/187.json +1 -1
  189. data/data/postal_codes/188.json +1 -1
  190. data/data/postal_codes/189.json +1 -1
  191. data/data/postal_codes/190.json +1 -1
  192. data/data/postal_codes/191.json +1 -1
  193. data/data/postal_codes/192.json +1 -1
  194. data/data/postal_codes/193.json +1 -1
  195. data/data/postal_codes/194.json +1 -1
  196. data/data/postal_codes/195.json +1 -1
  197. data/data/postal_codes/196.json +1 -1
  198. data/data/postal_codes/197.json +1 -1
  199. data/data/postal_codes/198.json +1 -1
  200. data/data/postal_codes/201.json +1 -1
  201. data/data/postal_codes/202.json +1 -1
  202. data/data/postal_codes/203.json +1 -1
  203. data/data/postal_codes/204.json +1 -1
  204. data/data/postal_codes/205.json +1 -1
  205. data/data/postal_codes/206.json +1 -1
  206. data/data/postal_codes/207.json +1 -1
  207. data/data/postal_codes/208.json +1 -1
  208. data/data/postal_codes/210.json +1 -1
  209. data/data/postal_codes/211.json +1 -1
  210. data/data/postal_codes/212.json +1 -1
  211. data/data/postal_codes/213.json +1 -1
  212. data/data/postal_codes/214.json +1 -1
  213. data/data/postal_codes/215.json +1 -1
  214. data/data/postal_codes/216.json +1 -1
  215. data/data/postal_codes/220.json +1 -1
  216. data/data/postal_codes/221.json +1 -1
  217. data/data/postal_codes/222.json +1 -1
  218. data/data/postal_codes/223.json +1 -1
  219. data/data/postal_codes/224.json +1 -1
  220. data/data/postal_codes/225.json +1 -1
  221. data/data/postal_codes/226.json +1 -1
  222. data/data/postal_codes/227.json +1 -1
  223. data/data/postal_codes/230.json +1 -1
  224. data/data/postal_codes/231.json +1 -1
  225. data/data/postal_codes/232.json +1 -1
  226. data/data/postal_codes/233.json +1 -1
  227. data/data/postal_codes/234.json +1 -1
  228. data/data/postal_codes/235.json +1 -1
  229. data/data/postal_codes/236.json +1 -1
  230. data/data/postal_codes/237.json +1 -1
  231. data/data/postal_codes/238.json +1 -1
  232. data/data/postal_codes/239.json +1 -1
  233. data/data/postal_codes/240.json +1 -1
  234. data/data/postal_codes/241.json +1 -1
  235. data/data/postal_codes/242.json +1 -1
  236. data/data/postal_codes/243.json +1 -1
  237. data/data/postal_codes/244.json +1 -1
  238. data/data/postal_codes/245.json +1 -1
  239. data/data/postal_codes/246.json +1 -1
  240. data/data/postal_codes/247.json +1 -1
  241. data/data/postal_codes/248.json +1 -1
  242. data/data/postal_codes/249.json +1 -1
  243. data/data/postal_codes/250.json +1 -1
  244. data/data/postal_codes/251.json +1 -1
  245. data/data/postal_codes/252.json +1 -1
  246. data/data/postal_codes/253.json +1 -1
  247. data/data/postal_codes/254.json +1 -1
  248. data/data/postal_codes/255.json +1 -1
  249. data/data/postal_codes/256.json +1 -1
  250. data/data/postal_codes/257.json +1 -1
  251. data/data/postal_codes/258.json +1 -1
  252. data/data/postal_codes/259.json +1 -1
  253. data/data/postal_codes/260.json +1 -1
  254. data/data/postal_codes/261.json +1 -1
  255. data/data/postal_codes/262.json +1 -1
  256. data/data/postal_codes/263.json +1 -1
  257. data/data/postal_codes/264.json +1 -1
  258. data/data/postal_codes/265.json +1 -1
  259. data/data/postal_codes/266.json +1 -1
  260. data/data/postal_codes/267.json +1 -1
  261. data/data/postal_codes/270.json +1 -1
  262. data/data/postal_codes/271.json +1 -1
  263. data/data/postal_codes/272.json +1 -1
  264. data/data/postal_codes/273.json +1 -1
  265. data/data/postal_codes/274.json +1 -1
  266. data/data/postal_codes/275.json +1 -1
  267. data/data/postal_codes/276.json +1 -1
  268. data/data/postal_codes/277.json +1 -1
  269. data/data/postal_codes/278.json +1 -1
  270. data/data/postal_codes/279.json +1 -1
  271. data/data/postal_codes/282.json +1 -1
  272. data/data/postal_codes/283.json +1 -1
  273. data/data/postal_codes/284.json +1 -1
  274. data/data/postal_codes/285.json +1 -1
  275. data/data/postal_codes/286.json +1 -1
  276. data/data/postal_codes/287.json +1 -1
  277. data/data/postal_codes/288.json +1 -1
  278. data/data/postal_codes/289.json +1 -1
  279. data/data/postal_codes/290.json +1 -1
  280. data/data/postal_codes/292.json +1 -1
  281. data/data/postal_codes/293.json +1 -1
  282. data/data/postal_codes/294.json +1 -1
  283. data/data/postal_codes/295.json +1 -1
  284. data/data/postal_codes/296.json +1 -1
  285. data/data/postal_codes/297.json +1 -1
  286. data/data/postal_codes/298.json +1 -1
  287. data/data/postal_codes/299.json +1 -1
  288. data/data/postal_codes/300.json +1 -1
  289. data/data/postal_codes/301.json +1 -1
  290. data/data/postal_codes/302.json +1 -1
  291. data/data/postal_codes/303.json +1 -1
  292. data/data/postal_codes/304.json +1 -1
  293. data/data/postal_codes/305.json +1 -1
  294. data/data/postal_codes/306.json +1 -1
  295. data/data/postal_codes/307.json +1 -1
  296. data/data/postal_codes/308.json +1 -1
  297. data/data/postal_codes/309.json +1 -1
  298. data/data/postal_codes/310.json +1 -1
  299. data/data/postal_codes/311.json +1 -1
  300. data/data/postal_codes/312.json +1 -1
  301. data/data/postal_codes/313.json +1 -1
  302. data/data/postal_codes/314.json +1 -1
  303. data/data/postal_codes/315.json +1 -1
  304. data/data/postal_codes/316.json +1 -1
  305. data/data/postal_codes/317.json +1 -1
  306. data/data/postal_codes/318.json +1 -1
  307. data/data/postal_codes/319.json +1 -1
  308. data/data/postal_codes/320.json +1 -1
  309. data/data/postal_codes/321.json +1 -1
  310. data/data/postal_codes/322.json +1 -1
  311. data/data/postal_codes/323.json +1 -1
  312. data/data/postal_codes/324.json +1 -1
  313. data/data/postal_codes/325.json +1 -1
  314. data/data/postal_codes/326.json +1 -1
  315. data/data/postal_codes/327.json +1 -1
  316. data/data/postal_codes/328.json +1 -1
  317. data/data/postal_codes/329.json +1 -1
  318. data/data/postal_codes/330.json +1 -1
  319. data/data/postal_codes/331.json +1 -1
  320. data/data/postal_codes/332.json +1 -1
  321. data/data/postal_codes/333.json +1 -1
  322. data/data/postal_codes/334.json +1 -1
  323. data/data/postal_codes/335.json +1 -1
  324. data/data/postal_codes/336.json +1 -1
  325. data/data/postal_codes/337.json +1 -1
  326. data/data/postal_codes/338.json +1 -1
  327. data/data/postal_codes/339.json +1 -1
  328. data/data/postal_codes/340.json +1 -1
  329. data/data/postal_codes/341.json +1 -1
  330. data/data/postal_codes/342.json +1 -1
  331. data/data/postal_codes/343.json +1 -1
  332. data/data/postal_codes/344.json +1 -1
  333. data/data/postal_codes/345.json +1 -1
  334. data/data/postal_codes/346.json +1 -1
  335. data/data/postal_codes/347.json +1 -1
  336. data/data/postal_codes/348.json +1 -1
  337. data/data/postal_codes/349.json +1 -1
  338. data/data/postal_codes/350.json +1 -1
  339. data/data/postal_codes/351.json +1 -1
  340. data/data/postal_codes/352.json +1 -1
  341. data/data/postal_codes/353.json +1 -1
  342. data/data/postal_codes/354.json +1 -1
  343. data/data/postal_codes/355.json +1 -1
  344. data/data/postal_codes/356.json +1 -1
  345. data/data/postal_codes/357.json +1 -1
  346. data/data/postal_codes/358.json +1 -1
  347. data/data/postal_codes/359.json +1 -1
  348. data/data/postal_codes/360.json +1 -1
  349. data/data/postal_codes/361.json +1 -1
  350. data/data/postal_codes/362.json +1 -1
  351. data/data/postal_codes/363.json +1 -1
  352. data/data/postal_codes/364.json +1 -1
  353. data/data/postal_codes/365.json +1 -1
  354. data/data/postal_codes/366.json +1 -1
  355. data/data/postal_codes/367.json +1 -1
  356. data/data/postal_codes/368.json +1 -1
  357. data/data/postal_codes/369.json +1 -1
  358. data/data/postal_codes/370.json +1 -1
  359. data/data/postal_codes/371.json +1 -1
  360. data/data/postal_codes/372.json +1 -1
  361. data/data/postal_codes/373.json +1 -1
  362. data/data/postal_codes/374.json +1 -1
  363. data/data/postal_codes/375.json +1 -1
  364. data/data/postal_codes/376.json +1 -1
  365. data/data/postal_codes/377.json +1 -1
  366. data/data/postal_codes/378.json +1 -1
  367. data/data/postal_codes/379.json +1 -1
  368. data/data/postal_codes/380.json +1 -1
  369. data/data/postal_codes/381.json +1 -1
  370. data/data/postal_codes/382.json +1 -1
  371. data/data/postal_codes/383.json +1 -1
  372. data/data/postal_codes/384.json +1 -1
  373. data/data/postal_codes/385.json +1 -1
  374. data/data/postal_codes/386.json +1 -1
  375. data/data/postal_codes/387.json +1 -1
  376. data/data/postal_codes/388.json +1 -1
  377. data/data/postal_codes/389.json +1 -1
  378. data/data/postal_codes/390.json +1 -1
  379. data/data/postal_codes/391.json +1 -1
  380. data/data/postal_codes/392.json +1 -1
  381. data/data/postal_codes/393.json +1 -1
  382. data/data/postal_codes/394.json +1 -1
  383. data/data/postal_codes/395.json +1 -1
  384. data/data/postal_codes/396.json +1 -1
  385. data/data/postal_codes/397.json +1 -1
  386. data/data/postal_codes/398.json +1 -1
  387. data/data/postal_codes/399.json +1 -1
  388. data/data/postal_codes/400.json +1 -1
  389. data/data/postal_codes/401.json +1 -1
  390. data/data/postal_codes/402.json +1 -1
  391. data/data/postal_codes/403.json +1 -1
  392. data/data/postal_codes/404.json +1 -1
  393. data/data/postal_codes/405.json +1 -1
  394. data/data/postal_codes/406.json +1 -1
  395. data/data/postal_codes/407.json +1 -1
  396. data/data/postal_codes/408.json +1 -1
  397. data/data/postal_codes/409.json +1 -1
  398. data/data/postal_codes/410.json +1 -1
  399. data/data/postal_codes/411.json +1 -1
  400. data/data/postal_codes/412.json +1 -1
  401. data/data/postal_codes/413.json +1 -1
  402. data/data/postal_codes/414.json +1 -1
  403. data/data/postal_codes/415.json +1 -1
  404. data/data/postal_codes/416.json +1 -1
  405. data/data/postal_codes/417.json +1 -1
  406. data/data/postal_codes/418.json +1 -1
  407. data/data/postal_codes/419.json +1 -1
  408. data/data/postal_codes/420.json +1 -1
  409. data/data/postal_codes/421.json +1 -1
  410. data/data/postal_codes/422.json +1 -1
  411. data/data/postal_codes/424.json +1 -1
  412. data/data/postal_codes/425.json +1 -1
  413. data/data/postal_codes/426.json +1 -1
  414. data/data/postal_codes/427.json +1 -1
  415. data/data/postal_codes/428.json +1 -1
  416. data/data/postal_codes/430.json +1 -1
  417. data/data/postal_codes/431.json +1 -1
  418. data/data/postal_codes/432.json +1 -1
  419. data/data/postal_codes/433.json +1 -1
  420. data/data/postal_codes/434.json +1 -1
  421. data/data/postal_codes/435.json +1 -1
  422. data/data/postal_codes/436.json +1 -1
  423. data/data/postal_codes/437.json +1 -1
  424. data/data/postal_codes/438.json +1 -1
  425. data/data/postal_codes/439.json +1 -1
  426. data/data/postal_codes/440.json +1 -1
  427. data/data/postal_codes/441.json +1 -1
  428. data/data/postal_codes/442.json +1 -1
  429. data/data/postal_codes/443.json +1 -1
  430. data/data/postal_codes/444.json +1 -1
  431. data/data/postal_codes/445.json +1 -1
  432. data/data/postal_codes/446.json +1 -1
  433. data/data/postal_codes/447.json +1 -1
  434. data/data/postal_codes/448.json +1 -1
  435. data/data/postal_codes/449.json +1 -1
  436. data/data/postal_codes/450.json +1 -1
  437. data/data/postal_codes/451.json +1 -1
  438. data/data/postal_codes/452.json +1 -1
  439. data/data/postal_codes/453.json +1 -1
  440. data/data/postal_codes/454.json +1 -1
  441. data/data/postal_codes/455.json +1 -1
  442. data/data/postal_codes/456.json +1 -1
  443. data/data/postal_codes/457.json +1 -1
  444. data/data/postal_codes/458.json +1 -1
  445. data/data/postal_codes/459.json +1 -1
  446. data/data/postal_codes/460.json +1 -1
  447. data/data/postal_codes/461.json +1 -1
  448. data/data/postal_codes/462.json +1 -1
  449. data/data/postal_codes/463.json +1 -1
  450. data/data/postal_codes/464.json +1 -1
  451. data/data/postal_codes/465.json +1 -1
  452. data/data/postal_codes/466.json +1 -1
  453. data/data/postal_codes/467.json +1 -1
  454. data/data/postal_codes/468.json +1 -1
  455. data/data/postal_codes/470.json +1 -1
  456. data/data/postal_codes/471.json +1 -1
  457. data/data/postal_codes/472.json +1 -1
  458. data/data/postal_codes/473.json +1 -1
  459. data/data/postal_codes/474.json +1 -1
  460. data/data/postal_codes/475.json +1 -1
  461. data/data/postal_codes/476.json +1 -1
  462. data/data/postal_codes/477.json +1 -1
  463. data/data/postal_codes/478.json +1 -1
  464. data/data/postal_codes/479.json +1 -1
  465. data/data/postal_codes/480.json +1 -1
  466. data/data/postal_codes/481.json +1 -1
  467. data/data/postal_codes/482.json +1 -1
  468. data/data/postal_codes/483.json +1 -1
  469. data/data/postal_codes/484.json +1 -1
  470. data/data/postal_codes/485.json +1 -1
  471. data/data/postal_codes/486.json +1 -1
  472. data/data/postal_codes/487.json +1 -1
  473. data/data/postal_codes/488.json +1 -1
  474. data/data/postal_codes/489.json +1 -1
  475. data/data/postal_codes/490.json +1 -1
  476. data/data/postal_codes/491.json +1 -1
  477. data/data/postal_codes/492.json +1 -1
  478. data/data/postal_codes/493.json +1 -1
  479. data/data/postal_codes/494.json +1 -1
  480. data/data/postal_codes/495.json +1 -1
  481. data/data/postal_codes/496.json +1 -1
  482. data/data/postal_codes/497.json +1 -1
  483. data/data/postal_codes/498.json +1 -1
  484. data/data/postal_codes/500.json +1 -1
  485. data/data/postal_codes/501.json +1 -1
  486. data/data/postal_codes/502.json +1 -1
  487. data/data/postal_codes/503.json +1 -1
  488. data/data/postal_codes/504.json +1 -1
  489. data/data/postal_codes/505.json +1 -1
  490. data/data/postal_codes/506.json +1 -1
  491. data/data/postal_codes/507.json +1 -1
  492. data/data/postal_codes/508.json +1 -1
  493. data/data/postal_codes/509.json +1 -1
  494. data/data/postal_codes/510.json +1 -1
  495. data/data/postal_codes/511.json +1 -1
  496. data/data/postal_codes/512.json +1 -1
  497. data/data/postal_codes/513.json +1 -1
  498. data/data/postal_codes/514.json +1 -1
  499. data/data/postal_codes/515.json +1 -1
  500. data/data/postal_codes/516.json +1 -1
  501. data/data/postal_codes/517.json +1 -1
  502. data/data/postal_codes/518.json +1 -1
  503. data/data/postal_codes/519.json +1 -1
  504. data/data/postal_codes/520.json +1 -1
  505. data/data/postal_codes/521.json +1 -1
  506. data/data/postal_codes/522.json +1 -1
  507. data/data/postal_codes/523.json +1 -1
  508. data/data/postal_codes/524.json +1 -1
  509. data/data/postal_codes/525.json +1 -1
  510. data/data/postal_codes/526.json +1 -1
  511. data/data/postal_codes/527.json +1 -1
  512. data/data/postal_codes/528.json +1 -1
  513. data/data/postal_codes/529.json +1 -1
  514. data/data/postal_codes/530.json +1 -1
  515. data/data/postal_codes/531.json +1 -1
  516. data/data/postal_codes/532.json +1 -1
  517. data/data/postal_codes/533.json +1 -1
  518. data/data/postal_codes/534.json +1 -1
  519. data/data/postal_codes/535.json +1 -1
  520. data/data/postal_codes/536.json +1 -1
  521. data/data/postal_codes/537.json +1 -1
  522. data/data/postal_codes/538.json +1 -1
  523. data/data/postal_codes/539.json +1 -1
  524. data/data/postal_codes/540.json +1 -1
  525. data/data/postal_codes/541.json +1 -1
  526. data/data/postal_codes/542.json +1 -1
  527. data/data/postal_codes/543.json +1 -1
  528. data/data/postal_codes/544.json +1 -1
  529. data/data/postal_codes/545.json +1 -1
  530. data/data/postal_codes/546.json +1 -1
  531. data/data/postal_codes/547.json +1 -1
  532. data/data/postal_codes/549.json +1 -1
  533. data/data/postal_codes/550.json +1 -1
  534. data/data/postal_codes/551.json +1 -1
  535. data/data/postal_codes/552.json +1 -1
  536. data/data/postal_codes/553.json +1 -1
  537. data/data/postal_codes/554.json +1 -1
  538. data/data/postal_codes/555.json +1 -1
  539. data/data/postal_codes/556.json +1 -1
  540. data/data/postal_codes/557.json +1 -1
  541. data/data/postal_codes/558.json +1 -1
  542. data/data/postal_codes/559.json +1 -1
  543. data/data/postal_codes/560.json +1 -1
  544. data/data/postal_codes/561.json +1 -1
  545. data/data/postal_codes/562.json +1 -1
  546. data/data/postal_codes/563.json +1 -1
  547. data/data/postal_codes/564.json +1 -1
  548. data/data/postal_codes/565.json +1 -1
  549. data/data/postal_codes/566.json +1 -1
  550. data/data/postal_codes/567.json +1 -1
  551. data/data/postal_codes/568.json +1 -1
  552. data/data/postal_codes/569.json +1 -1
  553. data/data/postal_codes/570.json +1 -1
  554. data/data/postal_codes/571.json +1 -1
  555. data/data/postal_codes/572.json +1 -1
  556. data/data/postal_codes/573.json +1 -1
  557. data/data/postal_codes/574.json +1 -1
  558. data/data/postal_codes/575.json +1 -1
  559. data/data/postal_codes/576.json +1 -1
  560. data/data/postal_codes/577.json +1 -1
  561. data/data/postal_codes/578.json +1 -1
  562. data/data/postal_codes/579.json +1 -1
  563. data/data/postal_codes/580.json +1 -1
  564. data/data/postal_codes/581.json +1 -1
  565. data/data/postal_codes/582.json +1 -1
  566. data/data/postal_codes/583.json +1 -1
  567. data/data/postal_codes/584.json +1 -1
  568. data/data/postal_codes/585.json +1 -1
  569. data/data/postal_codes/586.json +1 -1
  570. data/data/postal_codes/587.json +1 -1
  571. data/data/postal_codes/589.json +1 -1
  572. data/data/postal_codes/590.json +1 -1
  573. data/data/postal_codes/591.json +1 -1
  574. data/data/postal_codes/592.json +1 -1
  575. data/data/postal_codes/593.json +1 -1
  576. data/data/postal_codes/594.json +1 -1
  577. data/data/postal_codes/595.json +1 -1
  578. data/data/postal_codes/596.json +1 -1
  579. data/data/postal_codes/597.json +1 -1
  580. data/data/postal_codes/598.json +1 -1
  581. data/data/postal_codes/599.json +1 -1
  582. data/data/postal_codes/600.json +1 -1
  583. data/data/postal_codes/601.json +1 -1
  584. data/data/postal_codes/602.json +1 -1
  585. data/data/postal_codes/603.json +1 -1
  586. data/data/postal_codes/604.json +1 -1
  587. data/data/postal_codes/605.json +1 -1
  588. data/data/postal_codes/606.json +1 -1
  589. data/data/postal_codes/607.json +1 -1
  590. data/data/postal_codes/610.json +1 -1
  591. data/data/postal_codes/611.json +1 -1
  592. data/data/postal_codes/612.json +1 -1
  593. data/data/postal_codes/613.json +1 -1
  594. data/data/postal_codes/614.json +1 -1
  595. data/data/postal_codes/615.json +1 -1
  596. data/data/postal_codes/616.json +1 -1
  597. data/data/postal_codes/617.json +1 -1
  598. data/data/postal_codes/618.json +1 -1
  599. data/data/postal_codes/619.json +1 -1
  600. data/data/postal_codes/620.json +1 -1
  601. data/data/postal_codes/621.json +1 -1
  602. data/data/postal_codes/622.json +1 -1
  603. data/data/postal_codes/623.json +1 -1
  604. data/data/postal_codes/624.json +1 -1
  605. data/data/postal_codes/625.json +1 -1
  606. data/data/postal_codes/626.json +1 -1
  607. data/data/postal_codes/627.json +1 -1
  608. data/data/postal_codes/629.json +1 -1
  609. data/data/postal_codes/630.json +1 -1
  610. data/data/postal_codes/631.json +1 -1
  611. data/data/postal_codes/632.json +1 -1
  612. data/data/postal_codes/633.json +1 -1
  613. data/data/postal_codes/634.json +1 -1
  614. data/data/postal_codes/635.json +1 -1
  615. data/data/postal_codes/636.json +1 -1
  616. data/data/postal_codes/637.json +1 -1
  617. data/data/postal_codes/638.json +1 -1
  618. data/data/postal_codes/639.json +1 -1
  619. data/data/postal_codes/640.json +1 -1
  620. data/data/postal_codes/641.json +1 -1
  621. data/data/postal_codes/642.json +1 -1
  622. data/data/postal_codes/643.json +1 -1
  623. data/data/postal_codes/644.json +1 -1
  624. data/data/postal_codes/645.json +1 -1
  625. data/data/postal_codes/646.json +1 -1
  626. data/data/postal_codes/647.json +1 -1
  627. data/data/postal_codes/648.json +1 -1
  628. data/data/postal_codes/649.json +1 -1
  629. data/data/postal_codes/650.json +1 -1
  630. data/data/postal_codes/651.json +1 -1
  631. data/data/postal_codes/652.json +1 -1
  632. data/data/postal_codes/653.json +1 -1
  633. data/data/postal_codes/654.json +1 -1
  634. data/data/postal_codes/655.json +1 -1
  635. data/data/postal_codes/656.json +1 -1
  636. data/data/postal_codes/657.json +1 -1
  637. data/data/postal_codes/658.json +1 -1
  638. data/data/postal_codes/659.json +1 -1
  639. data/data/postal_codes/660.json +1 -1
  640. data/data/postal_codes/661.json +1 -1
  641. data/data/postal_codes/662.json +1 -1
  642. data/data/postal_codes/663.json +1 -1
  643. data/data/postal_codes/664.json +1 -1
  644. data/data/postal_codes/665.json +1 -1
  645. data/data/postal_codes/666.json +1 -1
  646. data/data/postal_codes/667.json +1 -1
  647. data/data/postal_codes/668.json +1 -1
  648. data/data/postal_codes/669.json +1 -1
  649. data/data/postal_codes/670.json +1 -1
  650. data/data/postal_codes/671.json +1 -1
  651. data/data/postal_codes/672.json +1 -1
  652. data/data/postal_codes/673.json +1 -1
  653. data/data/postal_codes/674.json +1 -1
  654. data/data/postal_codes/675.json +1 -1
  655. data/data/postal_codes/676.json +1 -1
  656. data/data/postal_codes/677.json +1 -1
  657. data/data/postal_codes/678.json +1 -1
  658. data/data/postal_codes/679.json +1 -1
  659. data/data/postal_codes/680.json +1 -1
  660. data/data/postal_codes/681.json +1 -1
  661. data/data/postal_codes/682.json +1 -1
  662. data/data/postal_codes/683.json +1 -1
  663. data/data/postal_codes/684.json +1 -1
  664. data/data/postal_codes/685.json +1 -1
  665. data/data/postal_codes/689.json +1 -1
  666. data/data/postal_codes/690.json +1 -1
  667. data/data/postal_codes/691.json +1 -1
  668. data/data/postal_codes/692.json +1 -1
  669. data/data/postal_codes/693.json +1 -1
  670. data/data/postal_codes/694.json +1 -1
  671. data/data/postal_codes/695.json +1 -1
  672. data/data/postal_codes/696.json +1 -1
  673. data/data/postal_codes/697.json +1 -1
  674. data/data/postal_codes/698.json +1 -1
  675. data/data/postal_codes/699.json +1 -1
  676. data/data/postal_codes/700.json +1 -1
  677. data/data/postal_codes/701.json +1 -1
  678. data/data/postal_codes/702.json +1 -1
  679. data/data/postal_codes/703.json +1 -1
  680. data/data/postal_codes/704.json +1 -1
  681. data/data/postal_codes/705.json +1 -1
  682. data/data/postal_codes/706.json +1 -1
  683. data/data/postal_codes/707.json +1 -1
  684. data/data/postal_codes/708.json +1 -1
  685. data/data/postal_codes/709.json +1 -1
  686. data/data/postal_codes/710.json +1 -1
  687. data/data/postal_codes/711.json +1 -1
  688. data/data/postal_codes/712.json +1 -1
  689. data/data/postal_codes/713.json +1 -1
  690. data/data/postal_codes/714.json +1 -1
  691. data/data/postal_codes/715.json +1 -1
  692. data/data/postal_codes/716.json +1 -1
  693. data/data/postal_codes/717.json +1 -1
  694. data/data/postal_codes/718.json +1 -1
  695. data/data/postal_codes/719.json +1 -1
  696. data/data/postal_codes/720.json +1 -1
  697. data/data/postal_codes/721.json +1 -1
  698. data/data/postal_codes/722.json +1 -1
  699. data/data/postal_codes/723.json +1 -1
  700. data/data/postal_codes/725.json +1 -1
  701. data/data/postal_codes/726.json +1 -1
  702. data/data/postal_codes/727.json +1 -1
  703. data/data/postal_codes/728.json +1 -1
  704. data/data/postal_codes/729.json +1 -1
  705. data/data/postal_codes/730.json +1 -1
  706. data/data/postal_codes/731.json +1 -1
  707. data/data/postal_codes/732.json +1 -1
  708. data/data/postal_codes/733.json +1 -1
  709. data/data/postal_codes/734.json +1 -1
  710. data/data/postal_codes/735.json +1 -1
  711. data/data/postal_codes/736.json +1 -1
  712. data/data/postal_codes/737.json +1 -1
  713. data/data/postal_codes/738.json +1 -1
  714. data/data/postal_codes/739.json +1 -1
  715. data/data/postal_codes/740.json +1 -1
  716. data/data/postal_codes/741.json +1 -1
  717. data/data/postal_codes/742.json +1 -1
  718. data/data/postal_codes/743.json +1 -1
  719. data/data/postal_codes/744.json +1 -1
  720. data/data/postal_codes/745.json +1 -1
  721. data/data/postal_codes/746.json +1 -1
  722. data/data/postal_codes/747.json +1 -1
  723. data/data/postal_codes/749.json +1 -1
  724. data/data/postal_codes/750.json +1 -1
  725. data/data/postal_codes/751.json +1 -1
  726. data/data/postal_codes/752.json +1 -1
  727. data/data/postal_codes/753.json +1 -1
  728. data/data/postal_codes/754.json +1 -1
  729. data/data/postal_codes/755.json +1 -1
  730. data/data/postal_codes/756.json +1 -1
  731. data/data/postal_codes/757.json +1 -1
  732. data/data/postal_codes/758.json +1 -1
  733. data/data/postal_codes/759.json +1 -1
  734. data/data/postal_codes/760.json +1 -1
  735. data/data/postal_codes/761.json +1 -1
  736. data/data/postal_codes/762.json +1 -1
  737. data/data/postal_codes/763.json +1 -1
  738. data/data/postal_codes/764.json +1 -1
  739. data/data/postal_codes/765.json +1 -1
  740. data/data/postal_codes/766.json +1 -1
  741. data/data/postal_codes/767.json +1 -1
  742. data/data/postal_codes/768.json +1 -1
  743. data/data/postal_codes/769.json +1 -1
  744. data/data/postal_codes/770.json +1 -1
  745. data/data/postal_codes/771.json +1 -1
  746. data/data/postal_codes/772.json +1 -1
  747. data/data/postal_codes/773.json +1 -1
  748. data/data/postal_codes/774.json +1 -1
  749. data/data/postal_codes/775.json +1 -1
  750. data/data/postal_codes/776.json +1 -1
  751. data/data/postal_codes/777.json +1 -1
  752. data/data/postal_codes/778.json +1 -1
  753. data/data/postal_codes/779.json +1 -1
  754. data/data/postal_codes/780.json +1 -1
  755. data/data/postal_codes/781.json +1 -1
  756. data/data/postal_codes/782.json +1 -1
  757. data/data/postal_codes/783.json +1 -1
  758. data/data/postal_codes/784.json +1 -1
  759. data/data/postal_codes/785.json +1 -1
  760. data/data/postal_codes/786.json +1 -1
  761. data/data/postal_codes/787.json +1 -1
  762. data/data/postal_codes/788.json +1 -1
  763. data/data/postal_codes/789.json +1 -1
  764. data/data/postal_codes/790.json +1 -1
  765. data/data/postal_codes/791.json +1 -1
  766. data/data/postal_codes/792.json +1 -1
  767. data/data/postal_codes/793.json +1 -1
  768. data/data/postal_codes/794.json +1 -1
  769. data/data/postal_codes/795.json +1 -1
  770. data/data/postal_codes/796.json +1 -1
  771. data/data/postal_codes/797.json +1 -1
  772. data/data/postal_codes/798.json +1 -1
  773. data/data/postal_codes/799.json +1 -1
  774. data/data/postal_codes/800.json +1 -1
  775. data/data/postal_codes/801.json +1 -1
  776. data/data/postal_codes/802.json +1 -1
  777. data/data/postal_codes/803.json +1 -1
  778. data/data/postal_codes/804.json +1 -1
  779. data/data/postal_codes/805.json +1 -1
  780. data/data/postal_codes/806.json +1 -1
  781. data/data/postal_codes/807.json +1 -1
  782. data/data/postal_codes/808.json +1 -1
  783. data/data/postal_codes/809.json +1 -1
  784. data/data/postal_codes/810.json +1 -1
  785. data/data/postal_codes/811.json +1 -1
  786. data/data/postal_codes/812.json +1 -1
  787. data/data/postal_codes/813.json +1 -1
  788. data/data/postal_codes/814.json +1 -1
  789. data/data/postal_codes/815.json +1 -1
  790. data/data/postal_codes/816.json +1 -1
  791. data/data/postal_codes/817.json +1 -1
  792. data/data/postal_codes/818.json +1 -1
  793. data/data/postal_codes/819.json +1 -1
  794. data/data/postal_codes/820.json +1 -1
  795. data/data/postal_codes/821.json +1 -1
  796. data/data/postal_codes/822.json +1 -1
  797. data/data/postal_codes/823.json +1 -1
  798. data/data/postal_codes/824.json +1 -1
  799. data/data/postal_codes/825.json +1 -1
  800. data/data/postal_codes/826.json +1 -1
  801. data/data/postal_codes/827.json +1 -1
  802. data/data/postal_codes/828.json +1 -1
  803. data/data/postal_codes/829.json +1 -1
  804. data/data/postal_codes/830.json +1 -1
  805. data/data/postal_codes/831.json +1 -1
  806. data/data/postal_codes/832.json +1 -1
  807. data/data/postal_codes/833.json +1 -1
  808. data/data/postal_codes/834.json +1 -1
  809. data/data/postal_codes/835.json +1 -1
  810. data/data/postal_codes/836.json +1 -1
  811. data/data/postal_codes/837.json +1 -1
  812. data/data/postal_codes/838.json +1 -1
  813. data/data/postal_codes/839.json +1 -1
  814. data/data/postal_codes/840.json +1 -1
  815. data/data/postal_codes/841.json +1 -1
  816. data/data/postal_codes/842.json +1 -1
  817. data/data/postal_codes/843.json +1 -1
  818. data/data/postal_codes/844.json +1 -1
  819. data/data/postal_codes/845.json +1 -1
  820. data/data/postal_codes/846.json +1 -1
  821. data/data/postal_codes/847.json +1 -1
  822. data/data/postal_codes/848.json +1 -1
  823. data/data/postal_codes/849.json +1 -1
  824. data/data/postal_codes/850.json +1 -1
  825. data/data/postal_codes/851.json +1 -1
  826. data/data/postal_codes/852.json +1 -1
  827. data/data/postal_codes/853.json +1 -1
  828. data/data/postal_codes/854.json +1 -1
  829. data/data/postal_codes/855.json +1 -1
  830. data/data/postal_codes/856.json +1 -1
  831. data/data/postal_codes/857.json +1 -1
  832. data/data/postal_codes/858.json +1 -1
  833. data/data/postal_codes/859.json +1 -1
  834. data/data/postal_codes/860.json +1 -1
  835. data/data/postal_codes/861.json +1 -1
  836. data/data/postal_codes/862.json +1 -1
  837. data/data/postal_codes/863.json +1 -1
  838. data/data/postal_codes/864.json +1 -1
  839. data/data/postal_codes/865.json +1 -1
  840. data/data/postal_codes/866.json +1 -1
  841. data/data/postal_codes/867.json +1 -1
  842. data/data/postal_codes/868.json +1 -1
  843. data/data/postal_codes/869.json +1 -1
  844. data/data/postal_codes/870.json +1 -1
  845. data/data/postal_codes/871.json +1 -1
  846. data/data/postal_codes/872.json +1 -1
  847. data/data/postal_codes/873.json +1 -1
  848. data/data/postal_codes/874.json +1 -1
  849. data/data/postal_codes/875.json +1 -1
  850. data/data/postal_codes/876.json +1 -1
  851. data/data/postal_codes/877.json +1 -1
  852. data/data/postal_codes/878.json +1 -1
  853. data/data/postal_codes/879.json +1 -1
  854. data/data/postal_codes/880.json +1 -1
  855. data/data/postal_codes/881.json +1 -1
  856. data/data/postal_codes/882.json +1 -1
  857. data/data/postal_codes/883.json +1 -1
  858. data/data/postal_codes/884.json +1 -1
  859. data/data/postal_codes/885.json +1 -1
  860. data/data/postal_codes/886.json +1 -1
  861. data/data/postal_codes/887.json +1 -1
  862. data/data/postal_codes/888.json +1 -1
  863. data/data/postal_codes/889.json +1 -1
  864. data/data/postal_codes/890.json +1 -1
  865. data/data/postal_codes/891.json +1 -1
  866. data/data/postal_codes/892.json +1 -1
  867. data/data/postal_codes/893.json +1 -1
  868. data/data/postal_codes/894.json +1 -1
  869. data/data/postal_codes/895.json +1 -1
  870. data/data/postal_codes/896.json +1 -1
  871. data/data/postal_codes/897.json +1 -1
  872. data/data/postal_codes/898.json +1 -1
  873. data/data/postal_codes/899.json +1 -1
  874. data/data/postal_codes/900.json +1 -1
  875. data/data/postal_codes/901.json +1 -1
  876. data/data/postal_codes/902.json +1 -1
  877. data/data/postal_codes/903.json +1 -1
  878. data/data/postal_codes/904.json +1 -1
  879. data/data/postal_codes/905.json +1 -1
  880. data/data/postal_codes/906.json +1 -1
  881. data/data/postal_codes/907.json +1 -1
  882. data/data/postal_codes/910.json +1 -1
  883. data/data/postal_codes/911.json +1 -1
  884. data/data/postal_codes/912.json +1 -1
  885. data/data/postal_codes/913.json +1 -1
  886. data/data/postal_codes/914.json +1 -1
  887. data/data/postal_codes/915.json +1 -1
  888. data/data/postal_codes/916.json +1 -1
  889. data/data/postal_codes/917.json +1 -1
  890. data/data/postal_codes/918.json +1 -1
  891. data/data/postal_codes/919.json +1 -1
  892. data/data/postal_codes/920.json +1 -1
  893. data/data/postal_codes/921.json +1 -1
  894. data/data/postal_codes/922.json +1 -1
  895. data/data/postal_codes/923.json +1 -1
  896. data/data/postal_codes/924.json +1 -1
  897. data/data/postal_codes/925.json +1 -1
  898. data/data/postal_codes/926.json +1 -1
  899. data/data/postal_codes/927.json +1 -1
  900. data/data/postal_codes/928.json +1 -1
  901. data/data/postal_codes/929.json +1 -1
  902. data/data/postal_codes/930.json +1 -1
  903. data/data/postal_codes/931.json +1 -1
  904. data/data/postal_codes/932.json +1 -1
  905. data/data/postal_codes/933.json +1 -1
  906. data/data/postal_codes/934.json +1 -1
  907. data/data/postal_codes/935.json +1 -1
  908. data/data/postal_codes/936.json +1 -1
  909. data/data/postal_codes/937.json +1 -1
  910. data/data/postal_codes/938.json +1 -1
  911. data/data/postal_codes/939.json +1 -1
  912. data/data/postal_codes/940.json +1 -1
  913. data/data/postal_codes/941.json +1 -1
  914. data/data/postal_codes/942.json +1 -1
  915. data/data/postal_codes/943.json +1 -1
  916. data/data/postal_codes/944.json +1 -1
  917. data/data/postal_codes/945.json +1 -1
  918. data/data/postal_codes/946.json +1 -1
  919. data/data/postal_codes/947.json +1 -1
  920. data/data/postal_codes/948.json +1 -1
  921. data/data/postal_codes/949.json +1 -1
  922. data/data/postal_codes/950.json +1 -1
  923. data/data/postal_codes/951.json +1 -1
  924. data/data/postal_codes/952.json +1 -1
  925. data/data/postal_codes/953.json +1 -1
  926. data/data/postal_codes/954.json +1 -1
  927. data/data/postal_codes/955.json +1 -1
  928. data/data/postal_codes/956.json +1 -1
  929. data/data/postal_codes/957.json +1 -1
  930. data/data/postal_codes/958.json +1 -1
  931. data/data/postal_codes/959.json +1 -1
  932. data/data/postal_codes/960.json +1 -1
  933. data/data/postal_codes/961.json +1 -1
  934. data/data/postal_codes/962.json +1 -1
  935. data/data/postal_codes/963.json +1 -1
  936. data/data/postal_codes/964.json +1 -1
  937. data/data/postal_codes/965.json +1 -1
  938. data/data/postal_codes/966.json +1 -1
  939. data/data/postal_codes/967.json +1 -1
  940. data/data/postal_codes/968.json +1 -1
  941. data/data/postal_codes/969.json +1 -1
  942. data/data/postal_codes/970.json +1 -1
  943. data/data/postal_codes/971.json +1 -1
  944. data/data/postal_codes/972.json +1 -1
  945. data/data/postal_codes/973.json +1 -1
  946. data/data/postal_codes/974.json +1 -1
  947. data/data/postal_codes/975.json +1 -1
  948. data/data/postal_codes/976.json +1 -1
  949. data/data/postal_codes/979.json +1 -1
  950. data/data/postal_codes/980.json +1 -1
  951. data/data/postal_codes/981.json +1 -1
  952. data/data/postal_codes/982.json +1 -1
  953. data/data/postal_codes/983.json +1 -1
  954. data/data/postal_codes/984.json +1 -1
  955. data/data/postal_codes/985.json +1 -1
  956. data/data/postal_codes/986.json +1 -1
  957. data/data/postal_codes/987.json +1 -1
  958. data/data/postal_codes/988.json +1 -1
  959. data/data/postal_codes/989.json +1 -1
  960. data/data/postal_codes/990.json +1 -1
  961. data/data/postal_codes/991.json +1 -1
  962. data/data/postal_codes/992.json +1 -1
  963. data/data/postal_codes/993.json +1 -1
  964. data/data/postal_codes/994.json +1 -1
  965. data/data/postal_codes/995.json +1 -1
  966. data/data/postal_codes/996.json +1 -1
  967. data/data/postal_codes/997.json +1 -1
  968. data/data/postal_codes/998.json +1 -1
  969. data/data/postal_codes/999.json +1 -1
  970. data/data/prefectures.json +94 -94
  971. data/lib/basho/active_record/base.rb +26 -2
  972. data/lib/basho/active_record/postal_auto_resolve.rb +33 -39
  973. data/lib/basho/city.rb +43 -14
  974. data/lib/basho/code_validator.rb +16 -1
  975. data/lib/basho/data/loader.rb +21 -2
  976. data/lib/basho/db/city.rb +24 -0
  977. data/lib/basho/db/prefecture.rb +26 -0
  978. data/lib/basho/db.rb +45 -0
  979. data/lib/basho/engine.rb +11 -1
  980. data/lib/basho/postal_code.rb +32 -4
  981. data/lib/basho/prefecture.rb +64 -23
  982. data/lib/basho/region.rb +19 -0
  983. data/lib/basho/version.rb +2 -1
  984. data/lib/basho.rb +51 -1
  985. data/lib/generators/basho/install_tables/install_tables_generator.rb +28 -0
  986. data/lib/generators/basho/install_tables/templates/create_basho_cities.rb.erb +15 -0
  987. data/lib/generators/basho/install_tables/templates/create_basho_prefectures.rb.erb +14 -0
  988. data/lib/tasks/basho.rake +11 -0
  989. metadata +9 -3
  990. data/app/assets/javascripts/controllers/basho/cascade_select_controller.js +0 -77
  991. data/app/controllers/basho/prefectures_controller.rb +0 -34
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Basho
4
4
 
5
- A Ruby gem for working with Japanese address data prefectures, cities, postal codes, and regions in a unified interface.
5
+ A Ruby gem for working with Japanese address data -- prefectures, cities, postal codes, and regions -- in a unified interface.
6
6
 
7
7
  ## Why Basho
8
8
 
@@ -15,10 +15,14 @@ Dealing with Japanese addresses is tedious.
15
15
 
16
16
  Basho solves all of these.
17
17
 
18
- - **No DB migrations** — All data is bundled as JSON. Just `gem install` and go
19
- - **ActiveRecord integration** — `include Basho` + a one-line macro for automatic postal code to address resolution on save
20
- - **Hotwire-ready** Built-in Rails Engine with postal code auto-fill and cascade select
21
- - **Lightweight** Immutable models via `Data.define`, lazy loading, zero external dependencies
18
+ ## Features
19
+
20
+ - **No DB migrations** -- All data is bundled as JSON. Just `gem install` and go
21
+ - **Optional DB backend** -- Generate tables for JOINs and foreign keys. The API auto-switches transparently
22
+ - **Framework-agnostic** -- Works with plain Ruby, Sinatra, Rails API-only, or any Ruby app
23
+ - **ActiveRecord integration** -- `include Basho` + a one-line macro for automatic postal code to address resolution on save
24
+ - **Hotwire-ready** -- Built-in Rails Engine with postal code auto-fill via Turbo Frame + Stimulus
25
+ - **Lightweight** -- Immutable models via `Data.define`, lazy loading, zero external dependencies
22
26
 
23
27
  ## Supported Versions
24
28
 
@@ -40,7 +44,7 @@ bundle install
40
44
  ### Look up an address from a postal code
41
45
 
42
46
  ```ruby
43
- postal = Basho::PostalCode.find("154-0011").first
47
+ postal = Basho::PostalCode.find("154-0011")
44
48
  postal.prefecture_name # => "東京都"
45
49
  postal.city_name # => "世田谷区"
46
50
  postal.town # => "上馬"
@@ -68,7 +72,7 @@ user.town_name # => "上馬"
68
72
 
69
73
  ```ruby
70
74
  Basho::Prefecture.find(13).name # => "東京都"
71
- Basho::Prefecture.where(region: "関東") # => 7 results
75
+ Basho::Prefecture.where(region: "関東") # => 7 prefectures
72
76
  Basho::City.find("131016").name # => "千代田区"
73
77
  ```
74
78
 
@@ -77,70 +81,109 @@ Basho::City.find("131016").name # => "千代田区"
77
81
  ### Prefecture
78
82
 
79
83
  ```ruby
80
- Basho::Prefecture.find(13) # Find by code
81
- Basho::Prefecture.find(name: "東京都") # Find by name
82
- Basho::Prefecture.all # All 47 prefectures
83
- Basho::Prefecture.where(region: "関東") # Filter by region
84
+ # Class methods
85
+ Basho::Prefecture.find(13) # Find by code (Integer)
86
+ Basho::Prefecture.find(name: "東京都") # Find by Japanese name
87
+ Basho::Prefecture.find(name_en: "Tokyo") # Find by English name
88
+ Basho::Prefecture.all # All 47 prefectures
89
+ Basho::Prefecture.where(region: "関東") # Filter by region name
90
+ ```
84
91
 
92
+ ```ruby
93
+ # Instance methods / members
85
94
  pref = Basho::Prefecture.find(13)
86
- pref.code # => 13
87
- pref.name # => "東京都"
88
- pref.name_en # => "Tokyo"
89
- pref.name_kana # => "トウキョウト"
90
- pref.name_hiragana # => "とうきょうと"
91
- pref.type # => ""
92
- pref.region # => Region
93
- pref.cities # => Array<City>
94
- pref.capital # => City (prefectural capital)
95
+ pref.code # => 13 (Integer)
96
+ pref.name # => "東京都" (String)
97
+ pref.name_en # => "Tokyo" (String)
98
+ pref.name_kana # => "トウキョウト" (String, katakana)
99
+ pref.name_hiragana # => "とうきょうと" (String, hiragana)
100
+ pref.region_name # => "関東" (String)
101
+ pref.type # => "都" (String: "都" / "道" / "府" / "県")
102
+ pref.capital_code # => "131016" (String, 6-digit city code)
103
+ pref.region # => Basho::Region
104
+ pref.cities # => Array<Basho::City>
105
+ pref.capital # => Basho::City (prefectural capital)
95
106
  ```
96
107
 
97
108
  ### City
98
109
 
99
110
  ```ruby
100
- Basho::City.find("131016") # Find by municipality code
101
- Basho::City.where(prefecture_code: 13) # Filter by prefecture
102
- Basho::City.valid_code?("131016") # Validate check digit
111
+ # Class methods
112
+ Basho::City.find("131016") # Find by 6-digit municipality code (String)
113
+ Basho::City.where(prefecture_code: 13) # Filter by prefecture code (Integer)
114
+ Basho::City.valid_code?("131016") # Validate JIS X 0401 check digit
115
+ ```
103
116
 
117
+ ```ruby
118
+ # Instance methods / members
104
119
  city = Basho::City.find("131016")
105
- city.code # => "131016"
106
- city.prefecture_code # => 13
107
- city.name # => "千代田区"
108
- city.name_kana # => "チヨダク"
109
- city.capital? # => false
110
- city.prefecture # => Prefecture
120
+ city.code # => "131016" (String, 6-digit)
121
+ city.prefecture_code # => 13 (Integer)
122
+ city.name # => "千代田区" (String)
123
+ city.name_kana # => "チヨダク" (String, katakana)
124
+ city.district # => nil (String or nil, e.g. "島尻郡")
125
+ city.capital # => false (Boolean, raw member)
126
+ city.capital? # => false (Boolean, prefectural capital?)
127
+ city.full_name # => "千代田区" (String, prepends district if present)
128
+ city.prefecture # => Basho::Prefecture
129
+ ```
130
+
131
+ `district` is set only for towns/villages that belong to a county (gun). For example:
132
+
133
+ ```ruby
134
+ city = Basho::City.find("473821")
135
+ city.name # => "八重瀬町"
136
+ city.district # => "島尻郡"
137
+ city.full_name # => "島尻郡八重瀬町"
111
138
  ```
112
139
 
113
140
  ### PostalCode
114
141
 
142
+ `find` returns a single `PostalCode` or `nil`. `where` returns an `Array` (may contain multiple results for shared postal codes).
143
+
115
144
  ```ruby
116
- results = Basho::PostalCode.find("154-0011") # Always returns an Array
117
- results = Basho::PostalCode.find("1540011") # Hyphenless format also works
145
+ # Class methods
146
+ Basho::PostalCode.find("154-0011") # => PostalCode or nil (first match)
147
+ Basho::PostalCode.find("1540011") # Hyphenless format also works
148
+ Basho::PostalCode.where(code: "154-0011") # => Array<PostalCode>
149
+ ```
118
150
 
119
- postal = results.first
120
- postal.code # => "1540011"
121
- postal.formatted_code # => "154-0011"
122
- postal.prefecture_code # => 13
123
- postal.prefecture_name # => "東京都"
124
- postal.city_name # => "世田谷区"
125
- postal.town # => "上馬"
126
- postal.prefecture # => Prefecture
151
+ ```ruby
152
+ # Instance methods / members
153
+ postal = Basho::PostalCode.find("154-0011")
154
+ postal.code # => "1540011" (String, 7 digits, no hyphen)
155
+ postal.formatted_code # => "154-0011" (String, with hyphen)
156
+ postal.prefecture_code # => 13 (Integer)
157
+ postal.city_name # => "世田谷区" (String)
158
+ postal.town # => "上馬" (String)
159
+ postal.prefecture_name # => "東京都" (String)
160
+ postal.prefecture # => Basho::Prefecture
127
161
  ```
128
162
 
129
163
  ### Region
130
164
 
165
+ 9 regions: Hokkaido, Tohoku, Kanto, Chubu, Kinki, Chugoku, Shikoku, Kyushu, Okinawa.
166
+
131
167
  ```ruby
132
- Basho::Region.all # 8 regions
133
- Basho::Region.find("関東") # Find by name
168
+ # Class methods
169
+ Basho::Region.all # => Array of 9 regions
170
+ Basho::Region.find("関東") # Find by Japanese name
171
+ Basho::Region.find("Kanto") # Find by English name
172
+ ```
134
173
 
174
+ ```ruby
175
+ # Instance methods / members
135
176
  region = Basho::Region.find("関東")
136
- region.name # => "関東"
137
- region.name_en # => "Kanto"
138
- region.prefectures # => Array<Prefecture>
139
- region.prefecture_codes # => [8, 9, 10, 11, 12, 13, 14]
177
+ region.name # => "関東" (String)
178
+ region.name_en # => "Kanto" (String)
179
+ region.prefecture_codes # => [8, 9, 10, 11, 12, 13, 14] (Array<Integer>)
180
+ region.prefectures # => Array<Basho::Prefecture>
140
181
  ```
141
182
 
142
183
  ## ActiveRecord Integration
143
184
 
185
+ Add `include Basho` to your model to enable the `basho` and `basho_postal` macros.
186
+
144
187
  ### Look up prefecture and city from a municipality code
145
188
 
146
189
  ```ruby
@@ -149,11 +192,19 @@ class Shop < ApplicationRecord
149
192
  basho :local_gov_code
150
193
  end
151
194
 
152
- shop.prefecture # => Prefecture
153
- shop.city # => City
195
+ shop.city # => Basho::City
196
+ shop.prefecture # => Basho::Prefecture
154
197
  shop.full_address # => "東京都千代田区"
155
198
  ```
156
199
 
200
+ `basho :column` defines three instance methods:
201
+
202
+ | Method | Return value |
203
+ |--------|-------------|
204
+ | `city` | `Basho::City` found by the column value |
205
+ | `prefecture` | `Basho::Prefecture` via `city.prefecture` |
206
+ | `full_address` | `"#{prefecture.name}#{city.name}"` or `nil` |
207
+
157
208
  ### Get an address string from a postal code
158
209
 
159
210
  ```ruby
@@ -165,9 +216,11 @@ end
165
216
  shop.postal_address # => "東京都世田谷区上馬"
166
217
  ```
167
218
 
219
+ `basho_postal :column` (without mapping options) defines a `postal_address` method that returns `"#{prefecture_name}#{city_name}#{town}"` or `nil`.
220
+
168
221
  ### Auto-save address columns from a postal code
169
222
 
170
- When you pass mapping options to `basho_postal`, it registers a `before_save` callback that auto-fills address columns from the postal code.
223
+ When you pass mapping options to `basho_postal`, it registers a `before_save` callback that auto-fills address columns whenever the postal code column changes.
171
224
 
172
225
  ```ruby
173
226
  class User < ApplicationRecord
@@ -179,29 +232,44 @@ class User < ApplicationRecord
179
232
  end
180
233
  ```
181
234
 
182
- - Resolution runs only when `postal_code` changes
235
+ Available mapping keys:
236
+
237
+ | Key | Resolved value |
238
+ |-----|---------------|
239
+ | `prefecture:` | Prefecture name (e.g. "東京都") |
240
+ | `city:` | City name (e.g. "世田谷区") |
241
+ | `town:` | Town name (e.g. "上馬") |
242
+ | `prefecture_code:` | Prefecture code (e.g. 13) |
243
+ | `city_code:` | 6-digit municipality code (e.g. "131130") |
244
+
245
+ - Resolution runs only when the postal code column will change on save
183
246
  - Partial mappings are supported (e.g. `prefecture:` only)
184
- - Without options, only the `postal_address` method is defined (backward compatible)
247
+ - The `postal_address` method is always defined regardless of mapping options
185
248
 
186
249
  ## Hotwire Engine
187
250
 
188
- A built-in Rails Engine providing postal code auto-fill and prefecture-city cascade select via Turbo Frame + Stimulus. No custom controllers needed.
251
+ A built-in Rails Engine providing postal code auto-fill via Turbo Frame + Stimulus.
189
252
 
190
253
  ### Setup
191
254
 
192
- ```ruby
193
- # config/application.rb
194
- require "basho/engine"
195
- ```
255
+ Mount the Engine in your routes:
196
256
 
197
257
  ```ruby
198
258
  # config/routes.rb
199
259
  mount Basho::Engine, at: "/basho"
200
260
  ```
201
261
 
262
+ The Engine provides a single route:
263
+
264
+ | Method | Path | Controller#Action |
265
+ |--------|------|------------------|
266
+ | GET | `/basho/postal_codes/lookup?code=1540011` | `Basho::PostalCodesController#lookup` |
267
+
268
+ The Stimulus controller and form helper are automatically registered via importmap and `ActionView` initializers.
269
+
202
270
  ### Postal Code Auto-fill
203
271
 
204
- Automatically fills in prefecture, city, and town fields when a postal code is entered.
272
+ Automatically fills in prefecture, city, and town fields when a 7-digit postal code is entered.
205
273
 
206
274
  ```erb
207
275
  <%= form_with(model: @shop) do |f| %>
@@ -213,83 +281,184 @@ Automatically fills in prefecture, city, and town fields when a postal code is e
213
281
  "basho--auto-fill-target": "input" } %>
214
282
 
215
283
  <turbo-frame id="basho-result"
216
- data-basho--auto-fill-target="frame"></turbo-frame>
217
-
218
- <%= f.text_field :prefecture,
219
- data: { "basho--auto-fill-target": "prefecture" } %>
220
- <%= f.text_field :city,
221
- data: { "basho--auto-fill-target": "city" } %>
222
- <%= f.text_field :town,
223
- data: { "basho--auto-fill-target": "town" } %>
284
+ data-basho--auto-fill-target="frame"
285
+ data-action="turbo:frame-load->basho--auto-fill#fill"></turbo-frame>
286
+
287
+ <div data-basho--auto-fill-target="fields" hidden>
288
+ <%= f.text_field :prefecture, disabled: true,
289
+ data: { "basho--auto-fill-target": "prefecture" } %>
290
+ <%= f.text_field :city, disabled: true,
291
+ data: { "basho--auto-fill-target": "city" } %>
292
+ <%= f.text_field :town, disabled: true,
293
+ data: { "basho--auto-fill-target": "town" } %>
294
+ </div>
224
295
  </div>
225
296
  <% end %>
226
297
  ```
227
298
 
299
+ How it works:
300
+
228
301
  1. User enters a 7-digit postal code
229
- 2. After a 300ms debounce, a Turbo Frame request is sent to the server
230
- 3. Stimulus auto-fills the prefecture, city, and town fields
302
+ 2. A Turbo Frame request is sent to the Engine's lookup endpoint
303
+ 3. Stimulus fills the prefecture, city, and town fields and shows the `fields` container
304
+ 4. When the postal code is cleared or incomplete, the fields are hidden
231
305
 
232
- ### Prefecture-City Cascade Select
306
+ The `fields` target is optional. Without it, the fields remain visible and are simply cleared.
233
307
 
234
- Selecting a prefecture dynamically loads the corresponding cities via JSON API.
308
+ You can use the `basho_autofill_frame_tag` helper instead of writing the `<turbo-frame>` tag manually:
235
309
 
236
310
  ```erb
237
- <%= form_with(model: @shop) do |f| %>
238
- <div data-controller="basho--cascade-select"
239
- data-basho--cascade-select-prefectures-url-value="<%= basho.prefectures_path %>"
240
- data-basho--cascade-select-cities-url-template-value="<%= basho.cities_prefecture_path(':code') %>">
241
-
242
- <select data-basho--cascade-select-target="prefecture"
243
- data-action="change->basho--cascade-select#prefectureChanged">
244
- <option value="">Select prefecture</option>
245
- </select>
246
-
247
- <select data-basho--cascade-select-target="city">
248
- <option value="">Select city</option>
249
- </select>
250
- </div>
251
- <% end %>
311
+ <%= basho_autofill_frame_tag %>
252
312
  ```
253
313
 
254
- Use the `basho_cascade_data` helper for concise data attributes.
314
+ This renders:
255
315
 
256
- ```erb
257
- <div <%= tag.attributes(data: basho_cascade_data) %>>
258
- ...
259
- </div>
316
+ ```html
317
+ <turbo-frame id="basho-result"
318
+ data-basho--auto-fill-target="frame"
319
+ data-action="turbo:frame-load->basho--auto-fill#fill"></turbo-frame>
260
320
  ```
261
321
 
262
- 1. On page load, if the prefecture select is empty, all 47 prefectures are fetched from the API
263
- 2. Selecting a prefecture rebuilds the city select from the API
264
- 3. Changing the prefecture resets and re-fetches the city select
322
+ #### Stimulus Controller Targets and Values
265
323
 
266
- ### JSON API Endpoints
324
+ | Type | Name | Description |
325
+ |------|------|-------------|
326
+ | Value | `url` (String) | Lookup endpoint URL (required) |
327
+ | Target | `input` | Postal code input field |
328
+ | Target | `frame` | Turbo Frame for server response |
329
+ | Target | `prefecture` | Prefecture output field |
330
+ | Target | `city` | City output field |
331
+ | Target | `town` | Town output field |
332
+ | Target | `fields` | Container to show/hide (optional) |
267
333
 
268
- Mounting the Engine exposes the following endpoints.
334
+ ### Prefecture-City Cascade Select
335
+
336
+ Basho provides the data -- build the UI in your app using Turbo Frame.
337
+
338
+ ```ruby
339
+ # app/controllers/cities_controller.rb
340
+ class CitiesController < ApplicationController
341
+ def index
342
+ @cities = Basho::City.where(prefecture_code: params[:prefecture_code].to_i)
343
+ end
344
+ end
345
+ ```
269
346
 
347
+ ```erb
348
+ <%# app/views/cities/index.html.erb %>
349
+ <turbo-frame id="city-select">
350
+ <%= f.select :city_code,
351
+ @cities.map { |c| [c.name, c.code] },
352
+ { include_blank: "Select city" } %>
353
+ </turbo-frame>
270
354
  ```
271
- GET /basho/prefectures # => [{"code":1,"name":"北海道"}, ...]
272
- GET /basho/prefectures/13/cities # => [{"code":"131016","name":"千代田区"}, ...]
273
- GET /basho/postal_codes/lookup?code=1540011 # => Turbo Frame HTML
355
+
356
+ ```erb
357
+ <%# In your form %>
358
+ <%= f.select :prefecture_code,
359
+ Basho::Prefecture.all.map { |p| [p.name, p.code] },
360
+ { include_blank: "Select prefecture" },
361
+ data: { action: "change->auto-submit#submit",
362
+ turbo_frame: "city-select" } %>
363
+
364
+ <turbo-frame id="city-select">
365
+ <%= f.select :city_code, [], include_blank: "Select city" %>
366
+ </turbo-frame>
274
367
  ```
275
368
 
276
- ## Without the Engine
369
+ This keeps the HTML and styling in your app where it belongs.
277
370
 
278
- You can skip the Engine and build your own endpoints using `PostalCode.find`.
371
+ ## Without Hotwire
372
+
373
+ The data API and ActiveRecord integration work without Hotwire. If you don't mount the Engine, no routes or Stimulus controllers are loaded.
279
374
 
280
375
  ```ruby
281
- # JSON API
282
- class PostalCodesController < ApplicationController
283
- def lookup
284
- results = Basho::PostalCode.find(params[:code])
285
-
286
- render json: results.map { |r|
287
- { prefecture: r.prefecture_name, city: r.city_name, town: r.town }
288
- }
289
- end
376
+ # Just the data API -- works in any Ruby app
377
+ require "basho"
378
+
379
+ Basho::PostalCode.find("154-0011").town # => "上馬"
380
+ Basho::Prefecture.find(13).name # => "東京都"
381
+ Basho::City.where(prefecture_code: 13) # => Array<City>
382
+ ```
383
+
384
+ ```ruby
385
+ # ActiveRecord integration -- works in any Rails app, Hotwire or not
386
+ class Shop < ApplicationRecord
387
+ include Basho
388
+ basho_postal :postal_code, city_code: :city_code, town: :town
290
389
  end
291
390
  ```
292
391
 
392
+ ## DB Backend (Optional)
393
+
394
+ By default, Basho loads all data from bundled JSON files -- no database needed. If you need JOINs, foreign key constraints, or want to reference `basho_prefectures` / `basho_cities` from your own tables, you can optionally generate DB tables.
395
+
396
+ ### Setup
397
+
398
+ ```bash
399
+ rails generate basho:install_tables
400
+ rails db:migrate
401
+ rails basho:seed
402
+ ```
403
+
404
+ This creates two tables:
405
+
406
+ | Table | Primary Key | Rows |
407
+ |-------|------------|------|
408
+ | `basho_prefectures` | `code` (integer) | 47 |
409
+ | `basho_cities` | `code` (string, 6-digit) | ~1,900 |
410
+
411
+ ### Transparent Auto-switching
412
+
413
+ Once the tables exist, the public API (`Basho::Prefecture.find`, `Basho::City.where`, etc.) automatically uses the DB backend. **No code changes required.**
414
+
415
+ ```ruby
416
+ # Works exactly the same whether DB tables exist or not
417
+ Basho::Prefecture.find(13).name # => "東京都"
418
+ Basho::City.find("131016").full_name # => "千代田区"
419
+ Basho::City.where(prefecture_code: 13) # => Array
420
+ ```
421
+
422
+ Detection happens once on first access via `Basho.db?` and is cached for the process lifetime.
423
+
424
+ ### Foreign Keys from Your Tables
425
+
426
+ ```ruby
427
+ # Your app migration
428
+ add_foreign_key :shops, :basho_cities, column: :city_code, primary_key: :code
429
+ add_foreign_key :shops, :basho_prefectures, column: :prefecture_code, primary_key: :code
430
+ ```
431
+
432
+ ### Direct DB Model Access
433
+
434
+ When you need ActiveRecord features (JOINs, scopes, eager loading), use the DB models directly:
435
+
436
+ ```ruby
437
+ # JOINs
438
+ Basho::DB::City.joins(:prefecture).where(basho_prefectures: { region_name: "関東" })
439
+
440
+ # Eager loading
441
+ Basho::DB::Prefecture.includes(:cities).find(13)
442
+
443
+ # Associations
444
+ prefecture = Basho::DB::Prefecture.find(13)
445
+ prefecture.cities # => ActiveRecord::Relation
446
+ prefecture.capital # => Basho::DB::City
447
+ ```
448
+
449
+ ### Re-seeding
450
+
451
+ `basho:seed` is idempotent. Run it again after updating the gem to refresh the data:
452
+
453
+ ```bash
454
+ rails basho:seed
455
+ ```
456
+
457
+ ### Notes
458
+
459
+ - Postal codes are **not** included in the DB tables (120k+ rows, updated monthly). They are always served from bundled JSON files.
460
+ - `Basho.db?` is thread-safe and cached. Use `Basho.reset_db_cache!` if you need to re-detect (e.g. after running migrations in a test).
461
+
293
462
  ## Data Sources
294
463
 
295
464
  | Data | Source | Update Frequency |
@@ -297,7 +466,7 @@ end
297
466
  | Prefectures | Ministry of Internal Affairs, JIS X 0401 | Rarely changes |
298
467
  | Cities | Ministry of Internal Affairs, Local Government Codes | A few times per year |
299
468
  | Postal codes | Japan Post KEN_ALL.csv | Monthly (auto-updated via GitHub Actions) |
300
- | Regions | 8 regions (hardcoded) | Never changes |
469
+ | Regions | 9 regions (hardcoded) | Never changes |
301
470
 
302
471
  ## Development
303
472
 
@@ -1,34 +1,29 @@
1
1
  import { Controller } from "@hotwired/stimulus"
2
2
 
3
3
  export default class extends Controller {
4
- static targets = ["input", "frame", "prefecture", "city", "town"]
5
- static values = { url: String, delay: { type: Number, default: 300 } }
6
-
7
- connect() {
8
- this.frameTarget.addEventListener("turbo:frame-load", this.#fillFields)
9
- }
10
-
11
- disconnect() {
12
- this.frameTarget.removeEventListener("turbo:frame-load", this.#fillFields)
13
- clearTimeout(this.timeout)
14
- }
4
+ static targets = ["input", "frame", "fields", "prefecture", "city", "town"]
5
+ static values = { url: String }
15
6
 
16
7
  lookup() {
17
- clearTimeout(this.timeout)
18
8
  const code = this.inputTarget.value.replace(/-/g, "")
19
- if (code.length < 7) return
20
9
 
21
- this.timeout = setTimeout(() => {
22
- this.frameTarget.src = `${this.urlValue}?code=${code}`
23
- }, this.delayValue)
10
+ if (code.length < 7) {
11
+ this.#setAddress()
12
+ return
13
+ }
14
+
15
+ this.frameTarget.src = `${this.urlValue}?code=${encodeURIComponent(code)}`
24
16
  }
25
17
 
26
- #fillFields = () => {
27
- const data = this.frameTarget.querySelector("[data-address]")
28
- if (!data) return
18
+ fill() {
19
+ const el = this.frameTarget.querySelector("[data-address]")
20
+ if (el) this.#setAddress(el.dataset)
21
+ }
29
22
 
30
- if (this.hasPrefectureTarget) this.prefectureTarget.value = data.dataset.prefecture || ""
31
- if (this.hasCityTarget) this.cityTarget.value = data.dataset.city || ""
32
- if (this.hasTownTarget) this.townTarget.value = data.dataset.town || ""
23
+ #setAddress(data) {
24
+ if (this.hasPrefectureTarget) this.prefectureTarget.value = data?.prefecture || ""
25
+ if (this.hasCityTarget) this.cityTarget.value = data?.city || ""
26
+ if (this.hasTownTarget) this.townTarget.value = data?.town || ""
27
+ if (this.hasFieldsTarget) this.fieldsTarget.hidden = !data
33
28
  }
34
29
  }
@@ -4,8 +4,7 @@ module Basho
4
4
  # 郵便番号からTurbo Frame形式で住所を返すコントローラー
5
5
  class PostalCodesController < ActionController::Base
6
6
  def lookup
7
- code = params[:code].to_s.delete("-")
8
- @postal = PostalCode.find(code).first if code.match?(/\A\d{7}\z/)
7
+ @postal = PostalCode.find(params[:code])
9
8
 
10
9
  render layout: false
11
10
  end
@@ -1,22 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Basho
4
- # 自動入力・カスケードセレクト用のフォームヘルパー
4
+ # 郵便番号自動入力用のフォームヘルパー
5
5
  module FormHelper
6
6
  def basho_autofill_frame_tag
7
7
  content_tag("turbo-frame", nil, id: "basho-result",
8
- data: { "basho--auto-fill-target" => "frame" })
9
- end
10
-
11
- def basho_cascade_data
12
- prefectures_url = basho.prefectures_path
13
- cities_template = basho.cities_prefecture_path(":code")
14
-
15
- {
16
- controller: "basho--cascade-select",
17
- "basho--cascade-select-prefectures-url-value" => prefectures_url,
18
- "basho--cascade-select-cities-url-template-value" => cities_template
19
- }
8
+ data: { "basho--auto-fill-target" => "frame",
9
+ action: "turbo:frame-load->basho--auto-fill#fill" })
20
10
  end
21
11
  end
22
12
  end
data/config/routes.rb CHANGED
@@ -2,7 +2,4 @@
2
2
 
3
3
  Basho::Engine.routes.draw do
4
4
  get "postal_codes/lookup", to: "postal_codes#lookup", as: :postal_code_lookup
5
- resources :prefectures, only: [:index], param: :code do
6
- get :cities, on: :member
7
- end
8
5
  end
data/data/cities/06.json CHANGED
@@ -255,7 +255,7 @@
255
255
  "prefecture_code": 6,
256
256
  "name": "庄内町",
257
257
  "capital": false,
258
- "name_kana": "シヨウナイマチ",
258
+ "name_kana": "ショウナイマチ",
259
259
  "district": "東田川郡"
260
260
  },
261
261
  {
data/data/cities/10.json CHANGED
@@ -144,7 +144,7 @@
144
144
  "prefecture_code": 10,
145
145
  "name": "中之条町",
146
146
  "capital": false,
147
- "name_kana": "ナカノジヨウマチ",
147
+ "name_kana": "ナカノジョウマチ",
148
148
  "district": "吾妻郡"
149
149
  },
150
150
  {
data/data/cities/11.json CHANGED
@@ -102,7 +102,7 @@
102
102
  "prefecture_code": 11,
103
103
  "name": "行田市",
104
104
  "capital": false,
105
- "name_kana": "ギヨウダシ"
105
+ "name_kana": "ギョウダシ"
106
106
  },
107
107
  {
108
108
  "code": "112071",
@@ -137,7 +137,7 @@
137
137
  "prefecture_code": 11,
138
138
  "name": "本庄市",
139
139
  "capital": false,
140
- "name_kana": "ホンジヨウシ"
140
+ "name_kana": "ホンジョウシ"
141
141
  },
142
142
  {
143
143
  "code": "112127",
@@ -165,7 +165,7 @@
165
165
  "prefecture_code": 11,
166
166
  "name": "羽生市",
167
167
  "capital": false,
168
- "name_kana": "ハニユウシ"
168
+ "name_kana": "ハニュウシ"
169
169
  },
170
170
  {
171
171
  "code": "112178",