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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c5c51563bcdb143a92a3dd9e3a639b45b0fdf91911f792444421fc1b5ec26b6c
4
- data.tar.gz: c95190b949c602b9e462a4d625e05e2d2e706b7c763b1b0e18dd4409a7fd358c
3
+ metadata.gz: a14446b90ac21440261e1558b52c2341bbe32fb4ab719c2b04932c3a7b34a5cf
4
+ data.tar.gz: 4416cb182886440853437ebc63c85d60028063fb9d282edd9a61883cb90060e5
5
5
  SHA512:
6
- metadata.gz: a9fb8dbf6572c8e1a7803743789a559bdaad88af2614c94a707ad4dc5bc445ec491d0bcf4c3e5a03fe3db472d18b80329bf2adff7d4c37b59909a6f653ff3a9c
7
- data.tar.gz: 4ea4a2d23dfbe54d4250577154aff29d27ad80443a59a5d6fc24d67dcb51aeee592f8d51f303e8208a2efe9407f4e3135321b19b8fa61e8fda652f4e94d6799b
6
+ metadata.gz: 01632dfab1fcbd4c3186cf289ceb9bcd0ddbe6aee1ad8253306e1c2cb08ea676b0d84cda27c7c7bbff7de47dd802c651eb876104e4d221793e0cffe7c868936d
7
+ data.tar.gz: cda91a973465799bc067da98d038339ad71cd9095be33fe7f86f7ab0679de57ad7c7927798bce0451a1a65c6d174bddaad9ae4eea086568035558a4269d2942e
data/.yardopts ADDED
@@ -0,0 +1,8 @@
1
+ --markup markdown
2
+ --charset utf-8
3
+ --output-dir doc
4
+ lib/**/*.rb
5
+ -
6
+ README.md
7
+ CHANGELOG.md
8
+ LICENSE.txt
data/CHANGELOG.md CHANGED
@@ -5,6 +5,53 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.4.0] - 2026-02-11
9
+
10
+ ### Added
11
+
12
+ - オプションDBバックエンド(`basho_prefectures` / `basho_cities` テーブル)
13
+ - `rails generate basho:install_tables` マイグレーションジェネレータ
14
+ - `rails basho:seed` Rakeタスク(冪等、JSON→DB一括投入)
15
+ - `Basho::DB::Prefecture` / `Basho::DB::City` ActiveRecordモデル
16
+ - `Basho.db?` によるDB自動検出(スレッドセーフ、キャッシュ付き)
17
+ - テーブルが存在すれば公開API(`Prefecture.find`, `City.where`等)が自動でDB経由に切り替わる
18
+ - READMEにDB Backendセクション追加(EN/JA)
19
+
20
+ ## [0.3.0] - 2026-02-11
21
+
22
+ ### Changed
23
+
24
+ - **BREAKING**: `PostalCode.find()` が配列ではなく単一の `PostalCode` または `nil` を返すように変更
25
+ - **BREAKING**: `PostalCode.where()` がキーワード引数 `where(code:)` に変更
26
+ - **BREAKING**: カスケードセレクト機能を削除(Stimulusコントローラー、都道府県/市区町村JSON API、フォームヘルパー)
27
+ - **BREAKING**: 郵便番号JSONのキー名 `city` → `city_name`、都道府県JSONのキー名 `region` → `region_name` に統一
28
+ - `auto_fill_controller.js` をTurboイベント駆動にシンプル化(デバウンス削除)
29
+ - `PostalAutoResolve` をシンプルなcase文ベースに簡素化
30
+ - 市区町村データソースを `jp_local_gov` gem から KEN_ALL.CSV に変更(外部gem依存を撤廃)
31
+ - `districts.rb` のロジックを `cities.rb` に統合
32
+
33
+ ### Added
34
+
35
+ - `PostalCode.where(code:)` - 配列で結果を返す検索メソッド
36
+ - Engine initializerでフォームヘルパーを自動インクルード
37
+ - `Data::Loader` にパストラバーサル防御を追加
38
+
39
+ ### Fixed
40
+
41
+ - KEN_ALL.CSVインポートの複数行町域名結合バグを修正(208件)
42
+ - 「の次に番地がくる場合」の町域名が空にならないバグを修正(17件)
43
+ - 名古屋市・大阪市・広島市の不正なdistrictデータを修正
44
+ - 市区町村カナを正規化(旧式カタカナ → 正式カタカナ、15件)
45
+
46
+ ### Removed
47
+
48
+ - `Basho::PrefecturesController` (都道府県/市区町村JSON API)
49
+ - `basho_cascade_data` フォームヘルパーメソッド
50
+ - `cascade_select_controller.js` Stimulusコントローラー
51
+ - `/basho/prefectures` ルート
52
+ - `tasks/import/districts.rb`(`cities.rb` に統合)
53
+ - `jp_local_gov` gem への依存
54
+
8
55
  ## [0.2.2] - 2026-02-09
9
56
 
10
57
  ### Fixed
@@ -50,6 +97,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
50
97
  - GitHub Actions CI(Ruby 3.2/3.3/3.4)
51
98
  - 月次データ自動更新ワークフロー
52
99
 
100
+ [0.4.0]: https://github.com/wagai/basho/releases/tag/v0.4.0
101
+ [0.3.0]: https://github.com/wagai/basho/releases/tag/v0.3.0
53
102
  [0.2.2]: https://github.com/wagai/basho/releases/tag/v0.2.2
54
103
  [0.2.1]: https://github.com/wagai/basho/releases/tag/v0.2.1
55
104
  [0.2.0]: https://github.com/wagai/basho/releases/tag/v0.2.0
data/README.ja.md CHANGED
@@ -15,10 +15,14 @@
15
15
 
16
16
  Bashoはこれらをまとめて解決します。
17
17
 
18
- - **DBマイグレーション不要** — 全データをJSON同梱。`gem install`だけで使える
19
- - **ActiveRecord統合** — `include Basho` + 1行のマクロで郵便番号→住所の自動保存
20
- - **Hotwire対応** 郵便番号自動入力・カスケードセレクトをビルトインEngine提供
21
- - **軽量** `Data.define`によるイミュータブルモデル、遅延読み込み、外部依存なし
18
+ ## 特徴
19
+
20
+ - **DBマイグレーション不要** -- 全データをJSON同梱。`gem install`だけで使える
21
+ - **オプションDBバックエンド** -- テーブル生成でJOINや外部キー制約に対応。APIは自動で切り替わる
22
+ - **フレームワーク非依存** -- 素のRuby、Sinatra、Rails API only、どこでも動く
23
+ - **ActiveRecord統合** -- `include Basho` + 1行のマクロで郵便番号→住所の自動保存
24
+ - **Hotwire対応** -- Turbo Frame + Stimulusによる郵便番号自動入力をビルトインEngine提供
25
+ - **軽量** -- `Data.define`によるイミュータブルモデル、遅延読み込み、外部依存なし
22
26
 
23
27
  ## 対応バージョン
24
28
 
@@ -40,7 +44,7 @@ bundle install
40
44
  ### 郵便番号から住所を引く
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 # => "上馬"
@@ -77,70 +81,109 @@ Basho::City.find("131016").name # => "千代田区"
77
81
  ### Prefecture(都道府県)
78
82
 
79
83
  ```ruby
80
- Basho::Prefecture.find(13) # コードで検索
81
- Basho::Prefecture.find(name: "東京都") # 名前で検索
82
- Basho::Prefecture.all # 全47件
83
- Basho::Prefecture.where(region: "関東") # 地方で絞り込み
84
+ # クラスメソッド
85
+ Basho::Prefecture.find(13) # コードで検索(Integer)
86
+ Basho::Prefecture.find(name: "東京都") # 日本語名で検索
87
+ Basho::Prefecture.find(name_en: "Tokyo") # 英語名で検索
88
+ Basho::Prefecture.all # 全47件
89
+ Basho::Prefecture.where(region: "関東") # 地方名で絞り込み
90
+ ```
84
91
 
92
+ ```ruby
93
+ # インスタンスメソッド / メンバー
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(県庁所在地)
95
+ pref.code # => 13 (Integer)
96
+ pref.name # => "東京都" (String)
97
+ pref.name_en # => "Tokyo" (String)
98
+ pref.name_kana # => "トウキョウト" (String, カタカナ)
99
+ pref.name_hiragana # => "とうきょうと" (String, ひらがな)
100
+ pref.region_name # => "関東" (String)
101
+ pref.type # => "都" (String: "都" / "道" / "府" / "県")
102
+ pref.capital_code # => "131016" (String, 6桁自治体コード)
103
+ pref.region # => Basho::Region
104
+ pref.cities # => Array<Basho::City>
105
+ pref.capital # => Basho::City(県庁所在地)
95
106
  ```
96
107
 
97
108
  ### City(市区町村)
98
109
 
99
110
  ```ruby
100
- Basho::City.find("131016") # 自治体コードで検索
101
- Basho::City.where(prefecture_code: 13) # 都道府県で絞り込み
102
- Basho::City.valid_code?("131016") # チェックディジット検証
111
+ # クラスメソッド
112
+ Basho::City.find("131016") # 6桁自治体コードで検索(String)
113
+ Basho::City.where(prefecture_code: 13) # 都道府県コードで絞り込み(Integer)
114
+ Basho::City.valid_code?("131016") # JIS X 0401 チェックディジット検証
115
+ ```
103
116
 
117
+ ```ruby
118
+ # インスタンスメソッド / メンバー
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桁)
121
+ city.prefecture_code # => 13 (Integer)
122
+ city.name # => "千代田区" (String)
123
+ city.name_kana # => "チヨダク" (String, カタカナ)
124
+ city.district # => nil (String or nil, 例: "島尻郡")
125
+ city.capital # => false (Boolean, 生のメンバー)
126
+ city.capital? # => false (Boolean, 県庁所在地か?)
127
+ city.full_name # => "千代田区" (String, 郡名がある場合は先頭に付与)
128
+ city.prefecture # => Basho::Prefecture
129
+ ```
130
+
131
+ `district`は郡に属する町村にのみ設定されます。例:
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`は単一の`PostalCode`または`nil`を返します。`where`は`Array`を返します(共有郵便番号の場合、複数件返ることがあります)。
143
+
115
144
  ```ruby
116
- results = Basho::PostalCode.find("154-0011") # 常にArrayを返す
117
- results = Basho::PostalCode.find("1540011") # ハイフンなしも可
145
+ # クラスメソッド
146
+ Basho::PostalCode.find("154-0011") # => PostalCode or nil(最初の1件)
147
+ Basho::PostalCode.find("1540011") # ハイフンなしも可
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
+ # インスタンスメソッド / メンバー
153
+ postal = Basho::PostalCode.find("154-0011")
154
+ postal.code # => "1540011" (String, 7桁, ハイフンなし)
155
+ postal.formatted_code # => "154-0011" (String, ハイフン付き)
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地方: 北海道、東北、関東、中部、近畿、中国、四国、九州、沖縄。
166
+
131
167
  ```ruby
132
- Basho::Region.all # 8地方
133
- Basho::Region.find("関東") # 名前で検索
168
+ # クラスメソッド
169
+ Basho::Region.all # => 9地方の配列
170
+ Basho::Region.find("関東") # 日本語名で検索
171
+ Basho::Region.find("Kanto") # 英語名で検索
172
+ ```
134
173
 
174
+ ```ruby
175
+ # インスタンスメソッド / メンバー
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統合
143
184
 
185
+ モデルに`include Basho`を追加すると、`basho`と`basho_postal`マクロが使えるようになります。
186
+
144
187
  ### 自治体コードから都道府県・市区町村を引く
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`は3つのインスタンスメソッドを定義します:
201
+
202
+ | メソッド | 戻り値 |
203
+ |---------|--------|
204
+ | `city` | カラム値で検索した`Basho::City` |
205
+ | `prefecture` | `city.prefecture`経由の`Basho::Prefecture` |
206
+ | `full_address` | `"#{prefecture.name}#{city.name}"` または `nil` |
207
+
157
208
  ### 郵便番号から住所文字列を取得
158
209
 
159
210
  ```ruby
@@ -165,9 +216,11 @@ end
165
216
  shop.postal_address # => "東京都世田谷区上馬"
166
217
  ```
167
218
 
219
+ `basho_postal :column`(マッピングオプションなし)は`postal_address`メソッドを定義します。戻り値は`"#{prefecture_name}#{city_name}#{town}"`または`nil`です。
220
+
168
221
  ### 郵便番号から住所カラムを自動保存
169
222
 
170
- `basho_postal`にマッピングオプションを渡すと、`before_save`で郵便番号から住所カラムを自動入力します。
223
+ `basho_postal`にマッピングオプションを渡すと、`before_save`コールバックを登録し、郵便番号カラムの変更時に住所カラムを自動入力します。
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
- - `postal_code`が変更された時だけ解決を実行
235
+ 利用可能なマッピングキー:
236
+
237
+ | キー | 解決される値 |
238
+ |------|-------------|
239
+ | `prefecture:` | 都道府県名(例: "東京都") |
240
+ | `city:` | 市区町村名(例: "世田谷区") |
241
+ | `town:` | 町域名(例: "上馬") |
242
+ | `prefecture_code:` | 都道府県コード(例: 13) |
243
+ | `city_code:` | 6桁自治体コード(例: "131130") |
244
+
245
+ - 解決は郵便番号カラムが保存時に変更される場合のみ実行
183
246
  - マッピングは部分指定可能(`prefecture:`だけでもOK)
184
- - オプションなしの場合は`postal_address`メソッドのみ定義(後方互換)
247
+ - `postal_address`メソッドはマッピングオプションの有無に関わらず常に定義される
185
248
 
186
249
  ## Hotwire Engine
187
250
 
188
- Turbo Frame + Stimulusによる住所自動入力・カスケードセレクトをビルトインで提供するRails Engineです。自前でコントローラーを書かずに使えます。
251
+ Turbo Frame + Stimulusによる郵便番号自動入力をビルトインで提供するRails Engineです。
189
252
 
190
253
  ### セットアップ
191
254
 
192
- ```ruby
193
- # config/application.rb
194
- require "basho/engine"
195
- ```
255
+ Engineをルーティングにマウントします:
196
256
 
197
257
  ```ruby
198
258
  # config/routes.rb
199
259
  mount Basho::Engine, at: "/basho"
200
260
  ```
201
261
 
262
+ Engineが提供するルート:
263
+
264
+ | メソッド | パス | コントローラー#アクション |
265
+ |---------|------|------------------------|
266
+ | GET | `/basho/postal_codes/lookup?code=1540011` | `Basho::PostalCodesController#lookup` |
267
+
268
+ Stimulusコントローラーとフォームヘルパーはimportmapと`ActionView`のinitializerにより自動登録されます。
269
+
202
270
  ### 郵便番号自動入力
203
271
 
204
- 郵便番号を入力すると都道府県・市区町村・町域フィールドを自動入力します。
272
+ 7桁の郵便番号を入力すると、都道府県・市区町村・町域フィールドを自動入力します。
205
273
 
206
274
  ```erb
207
275
  <%= form_with(model: @shop) do |f| %>
@@ -213,83 +281,184 @@ mount Basho::Engine, at: "/basho"
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
 
228
- 1. ユーザーが郵便番号を入力(7桁)
229
- 2. 300msデバウンス後、Turbo Frameでサーバーに問い合わせ
230
- 3. Stimulusが都道府県・市区町村・町域フィールドを自動入力
299
+ 動作の流れ:
231
300
 
232
- ### 都道府県・市区町村カスケードセレクト
301
+ 1. ユーザーが7桁の郵便番号を入力
302
+ 2. Turbo FrameでEngineのlookupエンドポイントに問い合わせ
303
+ 3. Stimulusが都道府県・市区町村・町域フィールドを自動入力し、`fields`コンテナを表示
304
+ 4. 郵便番号をクリア・変更するとフィールドは非表示に
233
305
 
234
- 都道府県を選択すると、対応する市区町村がJSON APIで動的に読み込まれます。
306
+ `fields`ターゲットはオプションです。なければフィールドは常に表示され、値のクリアのみ行います。
307
+
308
+ `basho_autofill_frame_tag`ヘルパーで`<turbo-frame>`タグを簡潔に書けます:
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="">都道府県を選択</option>
245
- </select>
246
-
247
- <select data-basho--cascade-select-target="city">
248
- <option value="">市区町村を選択</option>
249
- </select>
250
- </div>
251
- <% end %>
311
+ <%= basho_autofill_frame_tag %>
252
312
  ```
253
313
 
254
- `basho_cascade_data`ヘルパーでdata属性を簡潔に書けます。
314
+ これは以下をレンダリングします:
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. ページ読み込み時、都道府県セレクトが空ならAPIから47件を取得
263
- 2. 都道府県を選択すると、市区町村セレクトをAPIから再構築
264
- 3. 都道府県を変更すると、市区町村セレクトがリセットされ再取得
322
+ #### Stimulusコントローラーのターゲットとバリュー
265
323
 
266
- ### JSON APIエンドポイント
324
+ | 種類 | 名前 | 説明 |
325
+ |------|------|------|
326
+ | Value | `url` (String) | lookupエンドポイントのURL(必須) |
327
+ | Target | `input` | 郵便番号入力フィールド |
328
+ | Target | `frame` | サーバーレスポンス用Turbo Frame |
329
+ | Target | `prefecture` | 都道府県出力フィールド |
330
+ | Target | `city` | 市区町村出力フィールド |
331
+ | Target | `town` | 町域出力フィールド |
332
+ | Target | `fields` | 表示/非表示コンテナ(オプション) |
267
333
 
268
- Engineをマウントすると以下のエンドポイントが利用可能になります。
334
+ ### 都道府県・市区町村カスケードセレクト
335
+
336
+ Bashoはデータを提供します。UIはアプリ側で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: "市区町村を選択" } %>
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
+ <%# フォーム内 %>
358
+ <%= f.select :prefecture_code,
359
+ Basho::Prefecture.all.map { |p| [p.name, p.code] },
360
+ { include_blank: "都道府県を選択" },
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: "市区町村を選択" %>
366
+ </turbo-frame>
274
367
  ```
275
368
 
276
- ## Engine不要の場合
369
+ HTMLとスタイリングの自由度はアプリ側にあります。
277
370
 
278
- Engineを使わず、`PostalCode.find`で自由にエンドポイントを作ることもできます。
371
+ ## Hotwireなしでの利用
372
+
373
+ データAPIとActiveRecord統合はHotwireなしで動きます。Engineをマウントしなければ、ルーティングもStimulus controllerも読み込まれません。
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
+ # データAPIだけ -- どのRubyアプリでも動く
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統合 -- Hotwireの有無に関係なく、どのRailsアプリでも動く
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バックエンド(オプション)
393
+
394
+ デフォルトではBashoは同梱のJSONファイルからデータを読み込みます。DB不要です。JOINや外部キー制約が必要な場合、または自前のテーブルから`basho_prefectures` / `basho_cities`を参照したい場合は、オプションでDBテーブルを生成できます。
395
+
396
+ ### セットアップ
397
+
398
+ ```bash
399
+ rails generate basho:install_tables
400
+ rails db:migrate
401
+ rails basho:seed
402
+ ```
403
+
404
+ 2つのテーブルが作成されます:
405
+
406
+ | テーブル | 主キー | 件数 |
407
+ |---------|--------|------|
408
+ | `basho_prefectures` | `code` (integer) | 47 |
409
+ | `basho_cities` | `code` (string, 6桁) | 約1,900 |
410
+
411
+ ### 透過的な自動切り替え
412
+
413
+ テーブルが存在すれば、公開API(`Basho::Prefecture.find`、`Basho::City.where`等)は自動的にDBバックエンドを使います。**コード変更は不要です。**
414
+
415
+ ```ruby
416
+ # DBテーブルの有無に関わらず同じコードで動く
417
+ Basho::Prefecture.find(13).name # => "東京都"
418
+ Basho::City.find("131016").full_name # => "千代田区"
419
+ Basho::City.where(prefecture_code: 13) # => Array
420
+ ```
421
+
422
+ 検出は初回アクセス時に1度だけ行われ、プロセスの生存期間中キャッシュされます。
423
+
424
+ ### 自前テーブルからの外部キー
425
+
426
+ ```ruby
427
+ # アプリ側のマイグレーション
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
+ ### DBモデルの直接利用
433
+
434
+ ActiveRecordの機能(JOIN、スコープ、eager loading)が必要な場合は、DBモデルを直接使います:
435
+
436
+ ```ruby
437
+ # JOIN
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
+ # アソシエーション
444
+ prefecture = Basho::DB::Prefecture.find(13)
445
+ prefecture.cities # => ActiveRecord::Relation
446
+ prefecture.capital # => Basho::DB::City
447
+ ```
448
+
449
+ ### 再シード
450
+
451
+ `basho:seed`は冪等です。gem更新後に再実行すればデータが更新されます:
452
+
453
+ ```bash
454
+ rails basho:seed
455
+ ```
456
+
457
+ ### 補足
458
+
459
+ - 郵便番号はDBテーブルに**含まれません**(12万件以上、月次更新のため)。常にJSONファイルから提供されます。
460
+ - `Basho.db?`はスレッドセーフでキャッシュされます。再検出が必要な場合(テスト中のマイグレーション後など)は`Basho.reset_db_cache!`を使ってください。
461
+
293
462
  ## データソース
294
463
 
295
464
  | データ | ソース | 更新頻度 |
@@ -297,7 +466,7 @@ end
297
466
  | 都道府県 | 総務省 JIS X 0401 | ほぼ変わらない |
298
467
  | 市区町村 | 総務省 全国地方公共団体コード | 年に数回 |
299
468
  | 郵便番号 | 日本郵便 KEN_ALL.csv | 月次(GitHub Actions自動更新) |
300
- | 地方区分 | 8地方(ハードコード) | 変わらない |
469
+ | 地方区分 | 9地方(ハードコード) | 変わらない |
301
470
 
302
471
  ## 開発
303
472