im_onix 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (346) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +39 -0
  3. data/bin/html_codelist_to_yml.rb +46 -0
  4. data/bin/onix3_to_onix2.rb +192 -0
  5. data/bin/onix3_to_onix3.rb +401 -0
  6. data/bin/onix_bench.rb +15 -0
  7. data/bin/onix_pp.rb +216 -0
  8. data/bin/onix_split.rb +72 -0
  9. data/data/codelists/codelist-1.yml +12 -0
  10. data/data/codelists/codelist-10.yml +51 -0
  11. data/data/codelists/codelist-100.yml +8 -0
  12. data/data/codelists/codelist-101.yml +7 -0
  13. data/data/codelists/codelist-102.yml +5 -0
  14. data/data/codelists/codelist-11.yml +13 -0
  15. data/data/codelists/codelist-12.yml +15 -0
  16. data/data/codelists/codelist-121.yml +162 -0
  17. data/data/codelists/codelist-13.yml +10 -0
  18. data/data/codelists/codelist-138.yml +8 -0
  19. data/data/codelists/codelist-139.yml +102 -0
  20. data/data/codelists/codelist-14.yml +6 -0
  21. data/data/codelists/codelist-140.yml +9 -0
  22. data/data/codelists/codelist-141.yml +12 -0
  23. data/data/codelists/codelist-142.yml +14 -0
  24. data/data/codelists/codelist-143.yml +9 -0
  25. data/data/codelists/codelist-144.yml +10 -0
  26. data/data/codelists/codelist-145.yml +9 -0
  27. data/data/codelists/codelist-146.yml +5 -0
  28. data/data/codelists/codelist-147.yml +16 -0
  29. data/data/codelists/codelist-148.yml +6 -0
  30. data/data/codelists/codelist-149.yml +7 -0
  31. data/data/codelists/codelist-15.yml +15 -0
  32. data/data/codelists/codelist-150.yml +128 -0
  33. data/data/codelists/codelist-151.yml +10 -0
  34. data/data/codelists/codelist-152.yml +4 -0
  35. data/data/codelists/codelist-153.yml +19 -0
  36. data/data/codelists/codelist-154.yml +11 -0
  37. data/data/codelists/codelist-155.yml +10 -0
  38. data/data/codelists/codelist-156.yml +6 -0
  39. data/data/codelists/codelist-157.yml +6 -0
  40. data/data/codelists/codelist-158.yml +32 -0
  41. data/data/codelists/codelist-159.yml +8 -0
  42. data/data/codelists/codelist-16.yml +8 -0
  43. data/data/codelists/codelist-160.yml +6 -0
  44. data/data/codelists/codelist-161.yml +5 -0
  45. data/data/codelists/codelist-162.yml +9 -0
  46. data/data/codelists/codelist-163.yml +18 -0
  47. data/data/codelists/codelist-164.yml +7 -0
  48. data/data/codelists/codelist-165.yml +6 -0
  49. data/data/codelists/codelist-166.yml +6 -0
  50. data/data/codelists/codelist-167.yml +7 -0
  51. data/data/codelists/codelist-168.yml +4 -0
  52. data/data/codelists/codelist-169.yml +7 -0
  53. data/data/codelists/codelist-17.yml +95 -0
  54. data/data/codelists/codelist-170.yml +2 -0
  55. data/data/codelists/codelist-171.yml +4 -0
  56. data/data/codelists/codelist-172.yml +3 -0
  57. data/data/codelists/codelist-173.yml +5 -0
  58. data/data/codelists/codelist-174.yml +4 -0
  59. data/data/codelists/codelist-175.yml +217 -0
  60. data/data/codelists/codelist-176.yml +16 -0
  61. data/data/codelists/codelist-177.yml +4 -0
  62. data/data/codelists/codelist-178.yml +30 -0
  63. data/data/codelists/codelist-179.yml +4 -0
  64. data/data/codelists/codelist-18.yml +8 -0
  65. data/data/codelists/codelist-184.yml +10 -0
  66. data/data/codelists/codelist-19.yml +9 -0
  67. data/data/codelists/codelist-196.yml +22 -0
  68. data/data/codelists/codelist-197.yml +7 -0
  69. data/data/codelists/codelist-198.yml +4 -0
  70. data/data/codelists/codelist-2.yml +8 -0
  71. data/data/codelists/codelist-20.yml +2 -0
  72. data/data/codelists/codelist-203.yml +10 -0
  73. data/data/codelists/codelist-204.yml +6 -0
  74. data/data/codelists/codelist-21.yml +36 -0
  75. data/data/codelists/codelist-22.yml +11 -0
  76. data/data/codelists/codelist-23.yml +17 -0
  77. data/data/codelists/codelist-24.yml +13 -0
  78. data/data/codelists/codelist-25.yml +31 -0
  79. data/data/codelists/codelist-26.yml +94 -0
  80. data/data/codelists/codelist-27.yml +101 -0
  81. data/data/codelists/codelist-28.yml +10 -0
  82. data/data/codelists/codelist-29.yml +26 -0
  83. data/data/codelists/codelist-3.yml +13 -0
  84. data/data/codelists/codelist-30.yml +19 -0
  85. data/data/codelists/codelist-31.yml +5 -0
  86. data/data/codelists/codelist-32.yml +5 -0
  87. data/data/codelists/codelist-33.yml +44 -0
  88. data/data/codelists/codelist-34.yml +18 -0
  89. data/data/codelists/codelist-35.yml +8 -0
  90. data/data/codelists/codelist-36.yml +5 -0
  91. data/data/codelists/codelist-37.yml +8 -0
  92. data/data/codelists/codelist-38.yml +42 -0
  93. data/data/codelists/codelist-39.yml +21 -0
  94. data/data/codelists/codelist-40.yml +8 -0
  95. data/data/codelists/codelist-41.yml +8 -0
  96. data/data/codelists/codelist-42.yml +18 -0
  97. data/data/codelists/codelist-43.yml +8 -0
  98. data/data/codelists/codelist-44.yml +22 -0
  99. data/data/codelists/codelist-45.yml +15 -0
  100. data/data/codelists/codelist-46.yml +11 -0
  101. data/data/codelists/codelist-47.yml +6 -0
  102. data/data/codelists/codelist-48.yml +13 -0
  103. data/data/codelists/codelist-49.yml +87 -0
  104. data/data/codelists/codelist-5.yml +20 -0
  105. data/data/codelists/codelist-50.yml +10 -0
  106. data/data/codelists/codelist-51.yml +37 -0
  107. data/data/codelists/codelist-52.yml +3 -0
  108. data/data/codelists/codelist-53.yml +7 -0
  109. data/data/codelists/codelist-54.yml +25 -0
  110. data/data/codelists/codelist-55.yml +21 -0
  111. data/data/codelists/codelist-56.yml +4 -0
  112. data/data/codelists/codelist-57.yml +7 -0
  113. data/data/codelists/codelist-58.yml +27 -0
  114. data/data/codelists/codelist-59.yml +12 -0
  115. data/data/codelists/codelist-6.yml +78 -0
  116. data/data/codelists/codelist-60.yml +4 -0
  117. data/data/codelists/codelist-61.yml +5 -0
  118. data/data/codelists/codelist-62.yml +7 -0
  119. data/data/codelists/codelist-63.yml +2 -0
  120. data/data/codelists/codelist-64.yml +18 -0
  121. data/data/codelists/codelist-65.yml +31 -0
  122. data/data/codelists/codelist-66.yml +6 -0
  123. data/data/codelists/codelist-67.yml +4 -0
  124. data/data/codelists/codelist-68.yml +19 -0
  125. data/data/codelists/codelist-69.yml +6 -0
  126. data/data/codelists/codelist-7.yml +128 -0
  127. data/data/codelists/codelist-70.yml +4 -0
  128. data/data/codelists/codelist-71.yml +13 -0
  129. data/data/codelists/codelist-72.yml +9 -0
  130. data/data/codelists/codelist-73.yml +43 -0
  131. data/data/codelists/codelist-74.yml +491 -0
  132. data/data/codelists/codelist-75.yml +4 -0
  133. data/data/codelists/codelist-76.yml +14 -0
  134. data/data/codelists/codelist-77.yml +21 -0
  135. data/data/codelists/codelist-78.yml +179 -0
  136. data/data/codelists/codelist-79.yml +25 -0
  137. data/data/codelists/codelist-8.yml +9 -0
  138. data/data/codelists/codelist-80.yml +23 -0
  139. data/data/codelists/codelist-81.yml +41 -0
  140. data/data/codelists/codelist-82.yml +19 -0
  141. data/data/codelists/codelist-83.yml +71 -0
  142. data/data/codelists/codelist-84.yml +12 -0
  143. data/data/codelists/codelist-85.yml +25 -0
  144. data/data/codelists/codelist-86.yml +7 -0
  145. data/data/codelists/codelist-87.yml +8 -0
  146. data/data/codelists/codelist-88.yml +2 -0
  147. data/data/codelists/codelist-89.yml +3 -0
  148. data/data/codelists/codelist-9.yml +11 -0
  149. data/data/codelists/codelist-90.yml +13 -0
  150. data/data/codelists/codelist-91.yml +254 -0
  151. data/data/codelists/codelist-92.yml +11 -0
  152. data/data/codelists/codelist-93.yml +15 -0
  153. data/data/codelists/codelist-94.yml +5 -0
  154. data/data/codelists/codelist-95.yml +5 -0
  155. data/data/codelists/codelist-96.yml +193 -0
  156. data/data/codelists/codelist-97.yml +3 -0
  157. data/data/codelists/codelist-98.yml +23 -0
  158. data/data/codelists/codelist-99.yml +26 -0
  159. data/data/onix21/codelists/codelist-1.yml +14 -0
  160. data/data/onix21/codelists/codelist-10.yml +52 -0
  161. data/data/onix21/codelists/codelist-100.yml +8 -0
  162. data/data/onix21/codelists/codelist-101.yml +7 -0
  163. data/data/onix21/codelists/codelist-102.yml +5 -0
  164. data/data/onix21/codelists/codelist-11.yml +13 -0
  165. data/data/onix21/codelists/codelist-12.yml +16 -0
  166. data/data/onix21/codelists/codelist-121.yml +162 -0
  167. data/data/onix21/codelists/codelist-13.yml +11 -0
  168. data/data/onix21/codelists/codelist-138.yml +8 -0
  169. data/data/onix21/codelists/codelist-139.yml +109 -0
  170. data/data/onix21/codelists/codelist-14.yml +6 -0
  171. data/data/onix21/codelists/codelist-140.yml +9 -0
  172. data/data/onix21/codelists/codelist-141.yml +12 -0
  173. data/data/onix21/codelists/codelist-142.yml +14 -0
  174. data/data/onix21/codelists/codelist-143.yml +9 -0
  175. data/data/onix21/codelists/codelist-144.yml +8 -0
  176. data/data/onix21/codelists/codelist-145.yml +10 -0
  177. data/data/onix21/codelists/codelist-146.yml +5 -0
  178. data/data/onix21/codelists/codelist-147.yml +16 -0
  179. data/data/onix21/codelists/codelist-148.yml +6 -0
  180. data/data/onix21/codelists/codelist-149.yml +8 -0
  181. data/data/onix21/codelists/codelist-15.yml +16 -0
  182. data/data/onix21/codelists/codelist-150.yml +133 -0
  183. data/data/onix21/codelists/codelist-151.yml +10 -0
  184. data/data/onix21/codelists/codelist-152.yml +4 -0
  185. data/data/onix21/codelists/codelist-153.yml +22 -0
  186. data/data/onix21/codelists/codelist-154.yml +11 -0
  187. data/data/onix21/codelists/codelist-155.yml +10 -0
  188. data/data/onix21/codelists/codelist-156.yml +6 -0
  189. data/data/onix21/codelists/codelist-157.yml +6 -0
  190. data/data/onix21/codelists/codelist-158.yml +35 -0
  191. data/data/onix21/codelists/codelist-159.yml +8 -0
  192. data/data/onix21/codelists/codelist-16.yml +8 -0
  193. data/data/onix21/codelists/codelist-160.yml +7 -0
  194. data/data/onix21/codelists/codelist-161.yml +5 -0
  195. data/data/onix21/codelists/codelist-162.yml +9 -0
  196. data/data/onix21/codelists/codelist-163.yml +18 -0
  197. data/data/onix21/codelists/codelist-164.yml +7 -0
  198. data/data/onix21/codelists/codelist-165.yml +6 -0
  199. data/data/onix21/codelists/codelist-166.yml +6 -0
  200. data/data/onix21/codelists/codelist-167.yml +11 -0
  201. data/data/onix21/codelists/codelist-168.yml +4 -0
  202. data/data/onix21/codelists/codelist-169.yml +7 -0
  203. data/data/onix21/codelists/codelist-17.yml +98 -0
  204. data/data/onix21/codelists/codelist-170.yml +6 -0
  205. data/data/onix21/codelists/codelist-171.yml +4 -0
  206. data/data/onix21/codelists/codelist-172.yml +3 -0
  207. data/data/onix21/codelists/codelist-173.yml +5 -0
  208. data/data/onix21/codelists/codelist-174.yml +4 -0
  209. data/data/onix21/codelists/codelist-175.yml +230 -0
  210. data/data/onix21/codelists/codelist-176.yml +16 -0
  211. data/data/onix21/codelists/codelist-177.yml +4 -0
  212. data/data/onix21/codelists/codelist-178.yml +30 -0
  213. data/data/onix21/codelists/codelist-179.yml +5 -0
  214. data/data/onix21/codelists/codelist-18.yml +8 -0
  215. data/data/onix21/codelists/codelist-184.yml +10 -0
  216. data/data/onix21/codelists/codelist-19.yml +9 -0
  217. data/data/onix21/codelists/codelist-196.yml +22 -0
  218. data/data/onix21/codelists/codelist-197.yml +7 -0
  219. data/data/onix21/codelists/codelist-198.yml +8 -0
  220. data/data/onix21/codelists/codelist-2.yml +8 -0
  221. data/data/onix21/codelists/codelist-20.yml +2 -0
  222. data/data/onix21/codelists/codelist-203.yml +10 -0
  223. data/data/onix21/codelists/codelist-204.yml +7 -0
  224. data/data/onix21/codelists/codelist-21.yml +36 -0
  225. data/data/onix21/codelists/codelist-215.yml +9 -0
  226. data/data/onix21/codelists/codelist-216.yml +11 -0
  227. data/data/onix21/codelists/codelist-217.yml +3 -0
  228. data/data/onix21/codelists/codelist-218.yml +5 -0
  229. data/data/onix21/codelists/codelist-219.yml +5 -0
  230. data/data/onix21/codelists/codelist-22.yml +11 -0
  231. data/data/onix21/codelists/codelist-220.yml +7 -0
  232. data/data/onix21/codelists/codelist-23.yml +17 -0
  233. data/data/onix21/codelists/codelist-24.yml +14 -0
  234. data/data/onix21/codelists/codelist-25.yml +31 -0
  235. data/data/onix21/codelists/codelist-26.yml +100 -0
  236. data/data/onix21/codelists/codelist-27.yml +107 -0
  237. data/data/onix21/codelists/codelist-28.yml +10 -0
  238. data/data/onix21/codelists/codelist-29.yml +30 -0
  239. data/data/onix21/codelists/codelist-3.yml +13 -0
  240. data/data/onix21/codelists/codelist-30.yml +20 -0
  241. data/data/onix21/codelists/codelist-31.yml +5 -0
  242. data/data/onix21/codelists/codelist-32.yml +10 -0
  243. data/data/onix21/codelists/codelist-33.yml +46 -0
  244. data/data/onix21/codelists/codelist-34.yml +18 -0
  245. data/data/onix21/codelists/codelist-35.yml +8 -0
  246. data/data/onix21/codelists/codelist-36.yml +5 -0
  247. data/data/onix21/codelists/codelist-37.yml +8 -0
  248. data/data/onix21/codelists/codelist-38.yml +42 -0
  249. data/data/onix21/codelists/codelist-39.yml +21 -0
  250. data/data/onix21/codelists/codelist-40.yml +8 -0
  251. data/data/onix21/codelists/codelist-41.yml +9 -0
  252. data/data/onix21/codelists/codelist-42.yml +18 -0
  253. data/data/onix21/codelists/codelist-43.yml +9 -0
  254. data/data/onix21/codelists/codelist-44.yml +27 -0
  255. data/data/onix21/codelists/codelist-45.yml +20 -0
  256. data/data/onix21/codelists/codelist-46.yml +11 -0
  257. data/data/onix21/codelists/codelist-47.yml +6 -0
  258. data/data/onix21/codelists/codelist-48.yml +13 -0
  259. data/data/onix21/codelists/codelist-49.yml +281 -0
  260. data/data/onix21/codelists/codelist-5.yml +20 -0
  261. data/data/onix21/codelists/codelist-50.yml +10 -0
  262. data/data/onix21/codelists/codelist-51.yml +37 -0
  263. data/data/onix21/codelists/codelist-52.yml +3 -0
  264. data/data/onix21/codelists/codelist-53.yml +7 -0
  265. data/data/onix21/codelists/codelist-54.yml +25 -0
  266. data/data/onix21/codelists/codelist-55.yml +21 -0
  267. data/data/onix21/codelists/codelist-56.yml +4 -0
  268. data/data/onix21/codelists/codelist-57.yml +7 -0
  269. data/data/onix21/codelists/codelist-58.yml +27 -0
  270. data/data/onix21/codelists/codelist-59.yml +12 -0
  271. data/data/onix21/codelists/codelist-6.yml +78 -0
  272. data/data/onix21/codelists/codelist-60.yml +4 -0
  273. data/data/onix21/codelists/codelist-61.yml +5 -0
  274. data/data/onix21/codelists/codelist-62.yml +7 -0
  275. data/data/onix21/codelists/codelist-63.yml +2 -0
  276. data/data/onix21/codelists/codelist-64.yml +18 -0
  277. data/data/onix21/codelists/codelist-65.yml +31 -0
  278. data/data/onix21/codelists/codelist-66.yml +6 -0
  279. data/data/onix21/codelists/codelist-67.yml +4 -0
  280. data/data/onix21/codelists/codelist-68.yml +19 -0
  281. data/data/onix21/codelists/codelist-69.yml +6 -0
  282. data/data/onix21/codelists/codelist-7.yml +132 -0
  283. data/data/onix21/codelists/codelist-70.yml +4 -0
  284. data/data/onix21/codelists/codelist-71.yml +14 -0
  285. data/data/onix21/codelists/codelist-72.yml +9 -0
  286. data/data/onix21/codelists/codelist-73.yml +43 -0
  287. data/data/onix21/codelists/codelist-74.yml +492 -0
  288. data/data/onix21/codelists/codelist-75.yml +4 -0
  289. data/data/onix21/codelists/codelist-76.yml +14 -0
  290. data/data/onix21/codelists/codelist-77.yml +21 -0
  291. data/data/onix21/codelists/codelist-78.yml +191 -0
  292. data/data/onix21/codelists/codelist-79.yml +26 -0
  293. data/data/onix21/codelists/codelist-8.yml +9 -0
  294. data/data/onix21/codelists/codelist-80.yml +23 -0
  295. data/data/onix21/codelists/codelist-81.yml +41 -0
  296. data/data/onix21/codelists/codelist-82.yml +19 -0
  297. data/data/onix21/codelists/codelist-83.yml +72 -0
  298. data/data/onix21/codelists/codelist-84.yml +12 -0
  299. data/data/onix21/codelists/codelist-85.yml +25 -0
  300. data/data/onix21/codelists/codelist-86.yml +7 -0
  301. data/data/onix21/codelists/codelist-87.yml +8 -0
  302. data/data/onix21/codelists/codelist-88.yml +2 -0
  303. data/data/onix21/codelists/codelist-89.yml +3 -0
  304. data/data/onix21/codelists/codelist-9.yml +13 -0
  305. data/data/onix21/codelists/codelist-90.yml +13 -0
  306. data/data/onix21/codelists/codelist-91.yml +254 -0
  307. data/data/onix21/codelists/codelist-92.yml +11 -0
  308. data/data/onix21/codelists/codelist-93.yml +15 -0
  309. data/data/onix21/codelists/codelist-94.yml +5 -0
  310. data/data/onix21/codelists/codelist-95.yml +5 -0
  311. data/data/onix21/codelists/codelist-96.yml +194 -0
  312. data/data/onix21/codelists/codelist-97.yml +3 -0
  313. data/data/onix21/codelists/codelist-98.yml +25 -0
  314. data/data/onix21/codelists/codelist-99.yml +26 -0
  315. data/data/onix21/shortnames.yml +431 -0
  316. data/data/shortnames.yml +395 -0
  317. data/lib/im_onix.rb +2 -0
  318. data/lib/onix/code.rb +543 -0
  319. data/lib/onix/collateral_detail.rb +94 -0
  320. data/lib/onix/contributor.rb +87 -0
  321. data/lib/onix/date.rb +183 -0
  322. data/lib/onix/descriptive_detail.rb +552 -0
  323. data/lib/onix/discount_coded.rb +20 -0
  324. data/lib/onix/entity.rb +135 -0
  325. data/lib/onix/error.rb +6 -0
  326. data/lib/onix/helper.rb +66 -0
  327. data/lib/onix/identifier.rb +158 -0
  328. data/lib/onix/onix21.rb +604 -0
  329. data/lib/onix/onix_message.rb +187 -0
  330. data/lib/onix/price.rb +74 -0
  331. data/lib/onix/product.rb +846 -0
  332. data/lib/onix/product_supply.rb +89 -0
  333. data/lib/onix/publishing_detail.rb +86 -0
  334. data/lib/onix/related_material.rb +30 -0
  335. data/lib/onix/related_product.rb +45 -0
  336. data/lib/onix/related_work.rb +24 -0
  337. data/lib/onix/sales_outlet.rb +14 -0
  338. data/lib/onix/sales_restriction.rb +37 -0
  339. data/lib/onix/sales_rights.rb +12 -0
  340. data/lib/onix/subject.rb +35 -0
  341. data/lib/onix/subset.rb +334 -0
  342. data/lib/onix/supporting_resource.rb +192 -0
  343. data/lib/onix/tax.rb +23 -0
  344. data/lib/onix/territory.rb +56 -0
  345. data/lib/onix/website.rb +21 -0
  346. metadata +477 -0
data/bin/onix_pp.rb ADDED
@@ -0,0 +1,216 @@
1
+ #!/usr/bin/env ruby
2
+ require 'im_onix'
3
+
4
+ filename=ARGV[0]
5
+ version=ARGV[1]
6
+ encoding=ARGV[2]
7
+
8
+ if filename
9
+ msg=ONIX::ONIXMessage.new
10
+ msg.parse(filename,encoding,version)
11
+
12
+ puts "Release: #{msg.release}"
13
+
14
+ if msg.sender
15
+ puts "Sender: #{msg.sender.name}"
16
+ if msg.sender.gln
17
+ puts "Sender's GLN: #{msg.sender.gln}"
18
+ end
19
+ end
20
+ if msg.sent_date_time
21
+ puts "Sent date: #{msg.sent_date_time}"
22
+ end
23
+
24
+ msg.products.each do |product|
25
+ # pp product
26
+ puts "---"
27
+ puts " EAN: #{product.ean}"
28
+ puts " Title: #{product.title}"
29
+ puts " Language: #{product.language_name_of_text} (#{product.language_code_of_text})"
30
+ if product.subtitle
31
+ puts " Subtitle: #{product.subtitle}"
32
+ end
33
+ if product.publication_date
34
+ puts " Publication date: #{product.publication_date}"
35
+ end
36
+ if product.embargo_date
37
+ puts " Embargo date: #{product.embargo_date}"
38
+ end
39
+ if product.preorder_embargo_date
40
+ puts " Preorder embargo date: #{product.preorder_embargo_date}"
41
+ end
42
+ if product.public_announcement_date
43
+ puts " Public announcement date: #{product.public_announcement_date}"
44
+ end
45
+ if product.pages
46
+ puts " Pages: #{product.pages}"
47
+ end
48
+ if product.publisher_collection_title
49
+ puts " Collection: #{product.publisher_collection_title}"
50
+ end
51
+
52
+ product.bisac_categories_codes.each do |bcc|
53
+ puts " BISAC: #{bcc}"
54
+ end
55
+
56
+ product.clil_categories_codes.each do |bcc|
57
+ puts " CLIL: #{bcc}"
58
+ end
59
+
60
+ puts " Description: #{product.raw_description}"
61
+
62
+ if product.frontcover_url
63
+ puts " Frontcover: #{product.frontcover_url} (#{product.frontcover_last_updated})"
64
+ end
65
+
66
+ if product.epub_sample_url
67
+ puts " Sample: #{product.epub_sample_url}"
68
+ end
69
+
70
+ if product.keywords.length > 0
71
+ puts " Keywords: #{product.keywords.join(', ')}"
72
+ end
73
+
74
+ if product.publisher_name
75
+ puts " Publisher: #{product.publisher_name}"
76
+ end
77
+
78
+ # puts " Publisher: #{product.publisher_name}"
79
+ if product.imprint_name
80
+ puts " Imprint: #{product.imprint_name}"
81
+ end
82
+
83
+ if product.distributor_name
84
+ puts " Distributor: #{product.distributor_name}"
85
+ end
86
+
87
+ if product.onix_outlets_values.length > 0
88
+ puts " Outlets: #{product.onix_outlets_values}"
89
+ end
90
+
91
+ product.contributors.each do |c|
92
+ puts " Contributor:"
93
+ puts " Name: #{c.name}"
94
+ puts " Role: #{c.role.human}"
95
+ if c.biography
96
+ puts " Biography: #{c.raw_biography}"
97
+ end
98
+ end
99
+
100
+ if product.digital?
101
+ puts " -- Digital product"
102
+
103
+ if product.bundle?
104
+ puts " Multiple files bundle"
105
+ if product.file_description
106
+ puts " Description: #{product.raw_file_description}"
107
+ end
108
+
109
+ product.parts.each do |part|
110
+ puts " -- Part"
111
+ if part.ean
112
+ puts " EAN: #{part.ean}"
113
+ end
114
+ puts " Format: #{part.file_format}"
115
+ if part.file_description
116
+ puts " Description: #{part.raw_file_description}"
117
+ end
118
+ if part.protection_type
119
+ puts " Protection: #{part.protection_type}"
120
+ end
121
+ if part.filesize
122
+ puts " Filesize: #{part.filesize} bytes"
123
+ end
124
+ end
125
+
126
+ else
127
+ puts " Single file"
128
+ puts " Format: #{product.file_format}"
129
+ if product.file_description
130
+ puts " Description: #{product.raw_file_description}"
131
+ end
132
+ if product.protection_type
133
+ puts " Protection: #{product.protection_type}"
134
+ end
135
+ if product.filesize
136
+ puts " Filesize: #{product.filesize} bytes"
137
+ end
138
+ end
139
+
140
+ if product.print_product
141
+ puts " Paper EAN: #{product.print_product.ean}"
142
+ end
143
+ end
144
+
145
+ # pp product.supplies
146
+
147
+ current_price=product.current_price_amount_for('EUR', 'FR')
148
+ if current_price
149
+ puts " Current EUR price for FR: #{current_price/100.0} EUR"
150
+ end
151
+
152
+ if product.sold_separately?
153
+ puts " Available: #{product.available?}"
154
+ puts " Supplies:"
155
+
156
+ product.supplies_with_default_tax.each do |supply|
157
+ # if supply[:availability_date]
158
+ # puts " Availability date : #{supply[:availability_date]}"
159
+ # end
160
+ output=" "
161
+
162
+ if supply[:available]
163
+ output+="Available in "
164
+ else
165
+ output+="Not available in "
166
+ end
167
+
168
+ if ONIX::Territory.worldwide?(supply[:territory])
169
+ output+="WORLD"
170
+ else
171
+ output+=supply[:territory].join(", ")
172
+ end
173
+
174
+ if supply[:availability_date]
175
+ output+=" starting #{supply[:availability_date]}"
176
+ output+=" (#{supply[:availability_date].to_date})" if supply[:availability_date].class==Time
177
+
178
+ end
179
+
180
+ puts output
181
+
182
+ puts " Prices:"
183
+
184
+ supply[:prices].each do |price|
185
+ output=" "
186
+
187
+ output+="#{price[:amount].to_f/100.0} #{supply[:currency]}"
188
+
189
+ if supply[:including_tax]
190
+ output+=" tax included"
191
+ else
192
+ output+=" tax excluded"
193
+ end
194
+
195
+ if price[:from_date]
196
+ output+=" from #{price[:from_date]}"
197
+ output+=" (#{price[:from_date].to_date})" if price[:from_date].class==Time
198
+ end
199
+ if price[:until_date]
200
+ output+=" until #{price[:until_date]}"
201
+ output+=" (#{price[:until_date].to_date})" if price[:until_date].class==Time
202
+ end
203
+ puts output
204
+ end
205
+ end
206
+ else
207
+ puts " Not sold separately"
208
+ end
209
+ end
210
+ puts "---"
211
+ puts "Number of products: #{msg.products.count}"
212
+
213
+ else
214
+ puts "ONIX 3.0 pretty printer"
215
+ puts "Usage: onix_pp.rb onix.xml"
216
+ end
data/bin/onix_split.rb ADDED
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+ require 'im_onix'
3
+
4
+ filename=ARGV[0]
5
+ cnt=ARGV[1] || 1000
6
+ cnt=cnt.to_i
7
+
8
+ class OnixSplitter
9
+
10
+ def initialize(filename, output_name)
11
+ @filename=filename
12
+ @output_name=output_name
13
+ end
14
+
15
+ def write_part(file_count, part)
16
+ out_filename=@output_name+"."+file_count.to_s+".xml"
17
+ puts "Write file #{out_filename}"
18
+ fw=File.open(out_filename, 'w')
19
+ fw.write("<ONIXMessage release=\"3.0\">\n")
20
+ part.each do |p|
21
+ fw.write p
22
+ end
23
+ fw.write("</ONIXMessage>\n")
24
+ fw.close
25
+ end
26
+
27
+ def count
28
+ current_part_count=0
29
+ ONIX::Helper.each_xml_product(@filename) do |product_str|
30
+ current_part_count+=1
31
+ end
32
+ current_part_count
33
+ end
34
+
35
+ def split(max_parts)
36
+ file_count=0
37
+ current_part=[]
38
+ current_part_count=0
39
+ ONIX::Helper.each_xml_product(@filename) do |product_str|
40
+ tmp_msg=ONIX::ONIXMessage.new
41
+ tmp_msg.parse(product_str)
42
+
43
+ current_part[current_part_count] ||=""
44
+ current_part[current_part_count] += product_str + "\n"
45
+
46
+ if tmp_msg.products.first.sold_separately?
47
+ current_part_count+=1
48
+ end
49
+
50
+ if current_part_count > max_parts-1
51
+ write_part(file_count, current_part)
52
+ current_part=[]
53
+ current_part_count=0
54
+ file_count+=1
55
+ end
56
+ end
57
+
58
+ if current_part_count > 0
59
+ write_part(file_count, current_part)
60
+ current_part=[]
61
+ current_part_count=0
62
+ end
63
+
64
+ true
65
+ end
66
+
67
+ end
68
+
69
+ splitter=OnixSplitter.new(filename, "out/splitted")
70
+ splitter.split(cnt)
71
+ puts splitter.count
72
+
@@ -0,0 +1,12 @@
1
+ ---
2
+ :codelist:
3
+ '01': EarlyNotification
4
+ '02': AdvanceNotificationConfirmed
5
+ '03': NotificationConfirmedOnPublication
6
+ '04': UpdatePartial
7
+ '05': Delete
8
+ 08: NoticeOfSale
9
+ 09: NoticeOfAcquisition
10
+ '12': UpdateSupplydetailOnly
11
+ '13': UpdateMarketrepresentationOnly
12
+ '14': UpdateSupplydetailAndMarketrepresentation
@@ -0,0 +1,51 @@
1
+ ---
2
+ :codelist:
3
+ '000': EpublicationContentPackage
4
+ '001': Html
5
+ '002': Pdf
6
+ '003': Pdfmerchant
7
+ '004': AdobeEbookReader
8
+ '005': MicrosoftReaderLevel1level3
9
+ '006': MicrosoftReaderLevel5
10
+ '007': Netlibrary
11
+ 008: Metatext
12
+ 009: Mightywords
13
+ '010': EreaderAkaPalmReader
14
+ '011': Softbook
15
+ '012': Rocketbook
16
+ '013': GemstarReb1100
17
+ '014': GemstarReb1200
18
+ '015': FranklinEbookman
19
+ '016': Books24x7
20
+ '017': Digitalowl
21
+ 018: Handheldmed
22
+ 019: Wizeup
23
+ '020': Tk3
24
+ '021': Litraweb
25
+ '022': Mobipocket
26
+ '023': OpenEbook
27
+ '024': TownCompassDataviewer
28
+ '025': Txt
29
+ '026': Exebook
30
+ '027': SonyBbeb
31
+ 028: VitalsourceBookshelf
32
+ 029: Epub
33
+ '030': Myilibrary
34
+ '031': Kindle
35
+ '032': GoogleEdition
36
+ '033': Vook
37
+ '034': Dxreader
38
+ '035': Ebl
39
+ '036': Ebrary
40
+ '037': Isilo
41
+ 038: Plucker
42
+ 039: Vitalbook
43
+ '040': BookAppForIos
44
+ '041': AndroidApp
45
+ '042': OtherApp
46
+ '043': Xps
47
+ '044': Ibook
48
+ '045': Epib
49
+ '046': Scorm
50
+ 098: MultipleFormats
51
+ 099: Unspecified
@@ -0,0 +1,8 @@
1
+ ---
2
+ :codelist:
3
+ '01': BicDiscountGroupCode
4
+ '02': ProprietaryDiscountCode
5
+ '03': Boeksoort
6
+ '04': GermanTermsCode
7
+ '05': ProprietaryCommissionCode
8
+ '06': BicCommissionGroupCode
@@ -0,0 +1,7 @@
1
+ ---
2
+ :codelist:
3
+ '01': Proprietary
4
+ '02': Pnd
5
+ '04': Lccn
6
+ '16': Isni
7
+ '25': Gnd
@@ -0,0 +1,5 @@
1
+ ---
2
+ :codelist:
3
+ '01': Proprietary
4
+ '02': BicSalesOutletIdCode
5
+ '03': OnixSalesOutletIdCode
@@ -0,0 +1,13 @@
1
+ ---
2
+ :codelist:
3
+ '01': Html
4
+ '02': Pdf
5
+ '03': MicrosoftReader
6
+ '04': Rocketbook
7
+ '05': RichTextFormatRtf
8
+ '06': OpenEbookPublicationStructureOebpsFormatStandard
9
+ '07': Xml
10
+ 08: Sgml
11
+ 09: Exe
12
+ '10': Ascii
13
+ '11': MobipocketFormat
@@ -0,0 +1,15 @@
1
+ ---
2
+ :codelist:
3
+ '01': UkOpenMarketEdition
4
+ '02': AirportEdition
5
+ '03': Sonderausgabe
6
+ '04': PocketPaperback
7
+ '05': InternationalEditionUs
8
+ '06': LibraryAudioEdition
9
+ '07': UsOpenMarketEdition
10
+ 08: LivreScolaireDéclaréParLéditeur
11
+ 09: LivreScolaireNonSpécifié
12
+ '10': SupplementToNewspaper
13
+ '11': PrecioLibreTextbook
14
+ '12': NewsOutletEdition
15
+ '13': UsTextbook
@@ -0,0 +1,162 @@
1
+ ---
2
+ :codelist:
3
+ Afak: Afaka
4
+ Arab: Arabic
5
+ Armi: ImperialAramaic
6
+ Armn: Armenian
7
+ Avst: Avestan
8
+ Bali: Balinese
9
+ Bamu: Bamun
10
+ Bass: BassaVah
11
+ Batk: Batak
12
+ Beng: Bengali
13
+ Blis: Blissymbols
14
+ Bopo: Bopomofo
15
+ Brah: Brahmi
16
+ Brai: Braille
17
+ Bugi: Buginese
18
+ Buhd: Buhid
19
+ Cakm: Chakma
20
+ Cans: UnifiedCanadianAboriginalSyllabics
21
+ Cari: Carian
22
+ Cham: Cham
23
+ Cher: Cherokee
24
+ Cirt: Cirth
25
+ Copt: Coptic
26
+ Cprt: Cypriot
27
+ Cyrl: Cyrillic
28
+ Cyrs: CyrillicOldChurchSlavonicVariant
29
+ Deva: DevanagariNagari
30
+ Dsrt: DeseretMormon
31
+ Dupl: DuployanShorthandDuployanStenography
32
+ Egyd: EgyptianDemotic
33
+ Egyh: EgyptianHieratic
34
+ Egyp: EgyptianHieroglyphs
35
+ Elba: Elbasan
36
+ Ethi: EthiopicGeez
37
+ Geok: KhutsuriAsomtavruliAndKhutsuri
38
+ Geor: GeorgianMkhedruli
39
+ Glag: Glagolitic
40
+ Goth: Gothic
41
+ Gran: Grantha
42
+ Grek: Greek
43
+ Gujr: Gujarati
44
+ Guru: Gurmukhi
45
+ Hang: HangulHangŭlHangeul
46
+ Hani: HanHanziKanjiHanja
47
+ Hano: HanunooHanunóo
48
+ Hans: HanSimplifiedVariant
49
+ Hant: HanTraditionalVariant
50
+ Hebr: Hebrew
51
+ Hira: Hiragana
52
+ Hmng: PahawhHmong
53
+ Hrkt: JapaneseSyllabariesAliasForHiraganaKatakana
54
+ Hung: OldHungarian
55
+ Inds: IndusHarappan
56
+ Ital: OldItalicEtruscanOscanEtc
57
+ Java: Javanese
58
+ Jpan: JapaneseSyllabariesAliasForHanHiraganaKatakana
59
+ Jurc: Jurchen
60
+ Kali: KayahLi
61
+ Kana: Katakana
62
+ Khar: Kharoshthi
63
+ Khmr: Khmer
64
+ Khoj: Khojki
65
+ Knda: Kannada
66
+ Kore: KoreanAliasForHangulHan
67
+ Kpel: Kpelle
68
+ Kthi: Kaithi
69
+ Lana: LannaTaiTham
70
+ Laoo: Lao
71
+ Latf: LatinFrakturVariant
72
+ Latg: LatinGaelicVariant
73
+ Latn: Latin
74
+ Lepc: LepchaRóng
75
+ Limb: Limbu
76
+ Lina: LinearA
77
+ Linb: LinearB
78
+ Lisu: LisuFraser
79
+ Loma: Loma
80
+ Lyci: Lycian
81
+ Lydi: Lydian
82
+ Mand: MandaicMandaean
83
+ Mani: Manichaean
84
+ Maya: MayanHieroglyphs
85
+ Mend: Mende
86
+ Merc: MeroiticCursive
87
+ Mero: MeroiticHieroglyphs
88
+ Mlym: Malayalam
89
+ Mong: Mongolian
90
+ Moon: MoonMoonCodeMoonScriptMoonType
91
+ Mroo: MroMru
92
+ Mtei: MeiteiMayekMeitheiMeetei
93
+ Mymr: MyanmarBurmese
94
+ Narb: OldNorthArabianAncientNorthArabian
95
+ Nbat: Nabatean
96
+ Nkgb: NakhiGebaNakhi²ggŏ¹bawNaxiGeba
97
+ Nkoo: Nko
98
+ Nshu: Nüshu
99
+ Ogam: Ogham
100
+ Olck: OlChikiOlCemetOlSantali
101
+ Orkh: OldTurkicOrkhonRunic
102
+ Orya: Oriya
103
+ Osma: Osmanya
104
+ Palm: Palmyrene
105
+ Perm: OldPermic
106
+ Phag: Phagspa
107
+ Phli: InscriptionalPahlavi
108
+ Phlp: PsalterPahlavi
109
+ Phlv: BookPahlavi
110
+ Phnx: Phoenician
111
+ Plrd: MiaoPollard
112
+ Prti: InscriptionalParthian
113
+ Qaaa: ReservedForPrivateUseStart
114
+ Qabx: ReservedForPrivateUseEnd
115
+ Rjng: RejangRedjangKaganga
116
+ Roro: Rongorongo
117
+ Runr: Runic
118
+ Samr: Samaritan
119
+ Sara: Sarati
120
+ Sarb: OldSouthArabian
121
+ Saur: Saurashtra
122
+ Sgnw: Signwriting
123
+ Shaw: ShavianShaw
124
+ Shrd: SharadaŚāradā
125
+ Sind: KhudawadiSindhi
126
+ Sinh: Sinhala
127
+ Sora: SoraSompeng
128
+ Sund: Sundanese
129
+ Sylo: SylotiNagri
130
+ Syrc: Syriac
131
+ Syre: SyriacEstrangeloVariant
132
+ Syrj: SyriacWesternVariant
133
+ Syrn: SyriacEasternVariant
134
+ Tagb: Tagbanwa
135
+ Takr: TakriṬākrīṬāṅkrī
136
+ Tale: TaiLe
137
+ Talu: NewTaiLue
138
+ Taml: Tamil
139
+ Tang: Tangut
140
+ Tavt: TaiViet
141
+ Telu: Telugu
142
+ Teng: Tengwar
143
+ Tfng: TifinaghBerber
144
+ Tglg: TagalogBaybayinAlibata
145
+ Thaa: Thaana
146
+ Thai: Thai
147
+ Tibt: Tibetan
148
+ Tirh: Tiruta
149
+ Ugar: Ugaritic
150
+ Vaii: Vai
151
+ Visp: VisibleSpeech
152
+ Wara: WarangCitiVarangKshiti
153
+ Wole: Woleai
154
+ Xpeo: OldPersian
155
+ Xsux: CuneiformSumeroakkadian
156
+ Yiii: Yi
157
+ Zinh: CodeForInheritedScript
158
+ Zmth: MathematicalNotation
159
+ Zsym: Symbols
160
+ Zxxx: CodeForUnwrittenDocuments
161
+ Zyyy: CodeForUndeterminedScript
162
+ Zzzz: CodeForUncodedScript
@@ -0,0 +1,10 @@
1
+ ---
2
+ :codelist:
3
+ '01': Proprietary
4
+ '02': Issn
5
+ '03': GermanNationalBibliographySeriesId
6
+ '04': GermanBooksInPrintSeriesId
7
+ '05': ElectreSeriesId
8
+ '06': Doi
9
+ '15': Isbn13
10
+ '22': Urn
@@ -0,0 +1,8 @@
1
+ ---
2
+ :codelist:
3
+ SFS4900: FinnishStandardSfs4900
4
+ SFS5807: FinnishStandardSfs5807
5
+ SFS5755: FinnishStandardSfs5755
6
+ SFS3602: FinnishStandardSfs5824
7
+ ISO3602: Iso3602
8
+ ISO7098: Iso7098
@@ -0,0 +1,102 @@
1
+ ---
2
+ :codelist:
3
+ ACM: ACMoore
4
+ AAP: Aandp
5
+ ALB: Albertsons
6
+ AMZ: Amazon
7
+ ANR: AngusAndRobertson
8
+ ANB: Anobii
9
+ APC: Apple
10
+ ASD: Asda
11
+ AUD: Audible
12
+ BDL: BDalton
13
+ BNO: BarnesAndNoble
14
+ BBB: BedBathAndBeyond
15
+ BST: BestBuy
16
+ BIL: Bilbary
17
+ BJW: BjsWholesaleClub
18
+ BLK: Blackwells
19
+ BCA: BookClubAssociates
20
+ BSH: Bookish
21
+ BKP: Bookpeople
22
+ BKM: Booksamillion
23
+ BRD: Borders
24
+ BRB: BordersbooksEtc
25
+ BRT: BritishBookshops
26
+ CDL: CasaDelLibro
27
+ CHD: Christianbookcom
28
+ CST: Costco
29
+ CRB: CrateAndBarrel
30
+ CVS: CvsDrugStores
31
+ DSG: DicksSportingGoods
32
+ DYM: Dymocks
33
+ ELC: EarlyLearningCentre
34
+ ESN: Eason
35
+ EBC: EbooksCorp
36
+ ECH: Echristian
37
+ ECI: ElCorteInglés
38
+ ELE: Electre
39
+ ELB: Elibse
40
+ EMP: Empik
41
+ ENH: EnglishHeritage
42
+ FDB: Feedbooks
43
+ FNC: Fnac
44
+ FRY: FrysElectronics
45
+ GMS: Gamestop
46
+ GOO: GoogleBooks
47
+ GOS: BlinkboxFormerlyGospokenmobcast
48
+ HST: HastingsEntertainment
49
+ HMV: Hmv
50
+ HMD: HomeDepot
51
+ IND: Indigochapters
52
+ IMM: Immateriel.fr
53
+ JSM: JohnSmithAndSon
54
+ KMT: Kmart
55
+ KNB: Knfbblio
56
+ KNO: KnoInc
57
+ KBO: Kobo
58
+ KOO: Koorong
59
+ KRG: Kroger
60
+ LWE: Lowes
61
+ MKS: MarksAndSpencer
62
+ MAT: Matras
63
+ MMS: MediaMarktsaturn
64
+ MCR: Microcenter
65
+ MRR: Morrisons
66
+ MTC: Mothercare
67
+ MYB: Myboox
68
+ NTR: NationalTrust
69
+ NUM: Numilog
70
+ OFD: OfficeDepot
71
+ OFM: OfficeMax
72
+ OLF: Olf
73
+ PST: PastTimes
74
+ PTS: PetSmart
75
+ PTC: Petco
76
+ PLY: Playcom
77
+ PTB: PotteryBarn
78
+ RDB: Readbooks
79
+ RCL: Readcloud
80
+ RST: RestorationHardware
81
+ RET: Rethink
82
+ RTZ: RitzCamera
83
+ SFW: Safeway
84
+ SNS: Sainsburys
85
+ SLF: Selfridges
86
+ SNY: Sony
87
+ STP: Staples
88
+ TEA: TheEbookAlternative
89
+ TRG: Target
90
+ TES: Tesco
91
+ TSR: ToysRUs
92
+ TSO: TsoTheStationeryOffice
93
+ VRG: VirginMegastores
94
+ WHS: WHSmith
95
+ WTR: Waitrose
96
+ WLM: Walmart
97
+ WST: Waterstones
98
+ WHT: Whitcouls
99
+ WLS: WilliamsSonoma
100
+ WLW: Woolworths
101
+ ZVV: Zavvi
102
+ ZZZ: Other
@@ -0,0 +1,6 @@
1
+ ---
2
+ :codelist:
3
+ '00': Undefined
4
+ '01': SentenceCase
5
+ '02': TitleCase
6
+ '03': AllCapitals
@@ -0,0 +1,9 @@
1
+ ---
2
+ :codelist:
3
+ '01': WarningChokingHazardSmallPartsNotForChildrenUnder3Yrs
4
+ '02': WarningChokingHazardThisToyIsASmallBallNotForChildrenUnder3Yrs
5
+ '03': WarningChokingHazardToyContainsASmallBallNotForChildrenUnder3Yrs
6
+ '04': WarningChokingHazardChildrenUnder8YrsCanChokeOrSuffocateOnUninflatedOrBrokenBalloonsAdultSupervisionRequiredKeepUninflatedBalloonsFromChildrenDiscardBrokenBalloonsAtOnce
7
+ '05': WarningChokingHazardThisToyIsAMarbleNotForChildrenUnder3Yrs
8
+ '06': WarningChokingHazardToyContainsAMarbleNotForChildrenUnder3Yrs
9
+ '07': NoChokingHazardWarningNecessary