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/lib/onix/code.rb ADDED
@@ -0,0 +1,543 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'yaml'
3
+
4
+ module ONIX
5
+ module CodeHelper
6
+ def parse(n)
7
+ @code=n.text
8
+ @human=self.class.hash[n.text]
9
+ end
10
+
11
+ # Humanized string code
12
+ def human
13
+ @human
14
+ end
15
+
16
+ # ONIX code
17
+ def onix
18
+ @code
19
+ end
20
+ end
21
+
22
+ class Code < Subset
23
+ # code as defined in ONIX documentation codelist
24
+ attr_accessor :code
25
+ # humanized string (eg: "Digital watermarking" become DigitalWatermarking, "PDF" become Pdf, "BISAC Subject Heading" become BisacSubjectHeading, etc)
26
+ attr_accessor :human
27
+
28
+ include CodeHelper
29
+
30
+ # create Code from string ONIX code
31
+ def self.from_code(code)
32
+ o=self.new
33
+ o.code=code
34
+ o.human=self.hash[code]
35
+ o
36
+ end
37
+
38
+ # create Code from humanized string code
39
+ def self.from_human(human)
40
+ o=self.new
41
+ o.human=human
42
+ o.code=self.hash.key(human)
43
+ o
44
+ end
45
+
46
+ private
47
+ def self.hash
48
+ {}
49
+ end
50
+
51
+ end
52
+
53
+ class CodeFromYaml < Code
54
+ def self.hash
55
+ @hash||=YAML.load(File.open(File.dirname(__FILE__) + "/../../data/codelists/codelist-#{self.code_ident}.yml"))[:codelist]
56
+ end
57
+
58
+ def self.list
59
+ self.hash.to_a.map{|h| h.first}
60
+ end
61
+
62
+ def self.code_ident
63
+ nil
64
+ end
65
+ end
66
+
67
+ class CodeFromYamlWithMime < CodeFromYaml
68
+ # main formats
69
+ def mimetype
70
+ case self.human
71
+ when "Epub"
72
+ "application/epub"
73
+ when "Pdf"
74
+ "application/pdf"
75
+ when "Mobipocket"
76
+ "application/x-mobipocket-ebook"
77
+ when "Gif"
78
+ "image/gif"
79
+ when "Jpeg"
80
+ "image/jpeg"
81
+ when "Png"
82
+ "image/png"
83
+ end
84
+ end
85
+ end
86
+
87
+ class NotificationType < CodeFromYaml
88
+ private
89
+ def self.code_ident
90
+ 1
91
+ end
92
+ end
93
+
94
+ class ProductComposition < CodeFromYaml
95
+ private
96
+ def self.code_ident
97
+ 2
98
+ end
99
+ end
100
+
101
+ class ProductIDType < CodeFromYaml
102
+ private
103
+ def self.code_ident
104
+ 5
105
+ end
106
+ end
107
+
108
+ class CollectionIDType < CodeFromYaml
109
+ private
110
+ def self.code_ident
111
+ 13
112
+ end
113
+ end
114
+
115
+ class TitleType < CodeFromYaml
116
+ private
117
+ def self.code_ident
118
+ 15
119
+ end
120
+ end
121
+
122
+ class WorkIDType < CodeFromYaml
123
+ private
124
+ def self.code_ident
125
+ 16
126
+ end
127
+ end
128
+
129
+ class ContributorRole < CodeFromYaml
130
+ private
131
+ def self.code_ident
132
+ 17
133
+ end
134
+ end
135
+
136
+ class EditionType < CodeFromYaml
137
+ private
138
+ def self.code_ident
139
+ 21
140
+ end
141
+ end
142
+
143
+ class LanguageRole < CodeFromYaml
144
+ private
145
+ def self.code_ident
146
+ 22
147
+ end
148
+ end
149
+
150
+ class ExtentType < CodeFromYaml
151
+ private
152
+ def self.code_ident
153
+ 23
154
+ end
155
+ end
156
+
157
+ class ExtentUnit < CodeFromYaml
158
+ private
159
+ def self.code_ident
160
+ 24
161
+ end
162
+ end
163
+
164
+ class SubjectSchemeIdentifier < CodeFromYaml
165
+ private
166
+ def self.code_ident
167
+ 27
168
+ end
169
+ end
170
+
171
+ class AudienceCode < CodeFromYaml
172
+ private
173
+ def self.code_ident
174
+ 28
175
+ end
176
+ end
177
+
178
+ class IDType < CodeFromYaml
179
+ private
180
+ def self.code_ident
181
+ 44
182
+ end
183
+ end
184
+
185
+ class SenderIDType < IDType
186
+ end
187
+
188
+ class AddresseeIDType < IDType
189
+ end
190
+
191
+ class PublisherIDType < IDType
192
+ end
193
+
194
+ class ImprintIDType < IDType
195
+ end
196
+
197
+ class NameIDType < IDType
198
+ end
199
+
200
+ class PublishingRole < CodeFromYaml
201
+ private
202
+ def self.code_ident
203
+ 45
204
+ end
205
+ end
206
+
207
+ class SalesRightsType < CodeFromYaml
208
+ private
209
+ def self.code_ident
210
+ 46
211
+ end
212
+ end
213
+
214
+ class RegionCode < CodeFromYaml
215
+ private
216
+ def self.code_ident
217
+ 49
218
+ end
219
+ end
220
+
221
+ class ProductRelationCode < CodeFromYaml
222
+ private
223
+ def self.code_ident
224
+ 51
225
+ end
226
+ end
227
+
228
+ class DateFormat < CodeFromYaml
229
+ private
230
+ def self.code_ident
231
+ 55
232
+ end
233
+ end
234
+
235
+ class UnpricedItemType < CodeFromYaml
236
+ private
237
+ def self.code_ident
238
+ 57
239
+ end
240
+ end
241
+
242
+ class PriceType < CodeFromYaml
243
+ private
244
+ def self.code_ident
245
+ 58
246
+ end
247
+ end
248
+
249
+ class PriceQualifier < CodeFromYaml
250
+ private
251
+ def self.code_ident
252
+ 59
253
+ end
254
+ end
255
+
256
+ class PriceStatus < CodeFromYaml
257
+ private
258
+ def self.code_ident
259
+ 61
260
+ end
261
+ end
262
+
263
+ class TaxRateCode < CodeFromYaml
264
+ private
265
+ def self.code_ident
266
+ 62
267
+ end
268
+ end
269
+
270
+ class PublishingStatus < CodeFromYaml
271
+ private
272
+ def self.code_ident
273
+ 64
274
+ end
275
+ end
276
+
277
+ class ProductAvailability < CodeFromYaml
278
+ private
279
+ def self.code_ident
280
+ 65
281
+ end
282
+ end
283
+
284
+ class MarketPublishingStatus < CodeFromYaml
285
+ private
286
+ def self.code_ident
287
+ 68
288
+ end
289
+ end
290
+
291
+ class AgentRole < CodeFromYaml
292
+ private
293
+ def self.code_ident
294
+ 69
295
+ end
296
+ end
297
+
298
+ class SalesRestrictionType < CodeFromYaml
299
+ private
300
+ def self.code_ident
301
+ 71
302
+ end
303
+ end
304
+
305
+ class WebsiteRole < CodeFromYaml
306
+ private
307
+ def self.code_ident
308
+ 73
309
+ end
310
+ end
311
+
312
+ class LanguageCode < CodeFromYaml
313
+ private
314
+ def self.code_ident
315
+ 74
316
+ end
317
+ end
318
+
319
+ class ProductFormFeatureType < CodeFromYaml
320
+ private
321
+ def self.code_ident
322
+ 79
323
+ end
324
+ end
325
+
326
+ class ProductContentType < CodeFromYaml
327
+ private
328
+ def self.code_ident
329
+ 81
330
+ end
331
+ end
332
+
333
+ class CountryCode < CodeFromYaml
334
+ private
335
+ def self.code_ident
336
+ 91
337
+ end
338
+ end
339
+
340
+ class SupplierIDType < CodeFromYaml
341
+ private
342
+ def self.code_ident
343
+ 92
344
+ end
345
+ end
346
+
347
+ class AgentIDType < CodeFromYaml
348
+ private
349
+ def self.code_ident
350
+ 92
351
+ end
352
+ end
353
+
354
+ class SupplierRole < CodeFromYaml
355
+ private
356
+ def self.code_ident
357
+ 93
358
+ end
359
+ end
360
+
361
+ class SalesOutletIDType < CodeFromYaml
362
+ private
363
+ def self.code_ident
364
+ 102
365
+ end
366
+ end
367
+
368
+ class EpubTechnicalProtection < CodeFromYaml
369
+ private
370
+ def self.code_ident
371
+ 144
372
+ end
373
+ end
374
+
375
+ class EpubUsageType < CodeFromYaml
376
+ private
377
+ def self.code_ident
378
+ 145
379
+ end
380
+ end
381
+
382
+ class EpubUsageStatus < CodeFromYaml
383
+ private
384
+ def self.code_ident
385
+ 146
386
+ end
387
+ end
388
+
389
+ class EpubUsageUnit < CodeFromYaml
390
+ private
391
+ def self.code_ident
392
+ 147
393
+ end
394
+ end
395
+
396
+ class CollectionType < CodeFromYaml
397
+ private
398
+ def self.code_ident
399
+ 148
400
+ end
401
+ end
402
+
403
+ class CollectionSequenceType < CodeFromYaml
404
+ private
405
+ def self.code_ident
406
+ 197
407
+ end
408
+ end
409
+
410
+ class TitleElementLevel < CodeFromYaml
411
+ private
412
+ def self.code_ident
413
+ 149
414
+ end
415
+ end
416
+
417
+ class ProductForm < CodeFromYaml
418
+ private
419
+ def self.code_ident
420
+ 150
421
+ end
422
+ end
423
+
424
+ class ContributorPlaceRelator < CodeFromYaml
425
+ private
426
+ def self.code_ident
427
+ 151
428
+ end
429
+ end
430
+
431
+ class TextType < CodeFromYaml
432
+ private
433
+ def self.code_ident
434
+ 153
435
+ end
436
+ end
437
+
438
+ class ContentAudience < CodeFromYaml
439
+ private
440
+ def self.code_ident
441
+ 154
442
+ end
443
+ end
444
+
445
+ class ContentDateRole < CodeFromYaml
446
+ private
447
+ def self.code_ident
448
+ 155
449
+ end
450
+ end
451
+
452
+ class ResourceContentType < CodeFromYaml
453
+ private
454
+ def self.code_ident
455
+ 158
456
+ end
457
+ end
458
+
459
+ class ResourceMode < CodeFromYaml
460
+ private
461
+ def self.code_ident
462
+ 159
463
+ end
464
+ end
465
+
466
+ class ResourceFeatureType < CodeFromYaml
467
+ private
468
+ def self.code_ident
469
+ 160
470
+ end
471
+ end
472
+
473
+ class ResourceForm < CodeFromYaml
474
+ private
475
+ def self.code_ident
476
+ 161
477
+ end
478
+ end
479
+
480
+ class ResourceVersionFeatureType < CodeFromYaml
481
+ private
482
+ def self.code_ident
483
+ 162
484
+ end
485
+ end
486
+
487
+ class MarketDateRole < CodeFromYaml
488
+ private
489
+ def self.code_ident
490
+ 163
491
+ end
492
+ end
493
+
494
+ class PublishingDateRole < CodeFromYaml
495
+ private
496
+ def self.code_ident
497
+ 163
498
+ end
499
+ end
500
+
501
+ class WorkRelationCode < CodeFromYaml
502
+ private
503
+ def self.code_ident
504
+ 164
505
+ end
506
+ end
507
+
508
+ class SupplyDateRole < CodeFromYaml
509
+ private
510
+ def self.code_ident
511
+ 166
512
+ end
513
+ end
514
+
515
+ class TaxType < CodeFromYaml
516
+ private
517
+ def self.code_ident
518
+ 171
519
+ end
520
+ end
521
+
522
+ class PriceDateRole < CodeFromYaml
523
+ private
524
+ def self.code_ident
525
+ 173
526
+ end
527
+ end
528
+
529
+ class ProductFormDetail < CodeFromYamlWithMime
530
+ private
531
+ def self.code_ident
532
+ 175
533
+ end
534
+ end
535
+
536
+ class SupportingResourceFileFormat < CodeFromYamlWithMime
537
+ private
538
+ def self.code_ident
539
+ 178
540
+ end
541
+ end
542
+
543
+ end
@@ -0,0 +1,94 @@
1
+ module ONIX
2
+ class TextContent < SubsetDSL
3
+ element "TextType", :subset
4
+ element "ContentAudience", :subset
5
+ element "Text", :text
6
+ element "TextAuthor", :text
7
+ element "SourceTitle", :text
8
+
9
+ scope :description, lambda { human_code_match(:text_type, "Description")}
10
+ scope :short_description, lambda { human_code_match(:text_type, "ShortDescriptionannotation")}
11
+
12
+ # shortcuts
13
+ def type
14
+ @text_type
15
+ end
16
+ end
17
+
18
+ class CollateralDetail < SubsetDSL
19
+ elements "TextContent", :subset
20
+ elements "SupportingResource", :subset
21
+
22
+ def description
23
+ desc_contents=@text_contents.description + @text_contents.short_description
24
+ if desc_contents.length > 0
25
+ desc_contents.first.text
26
+ else
27
+ nil
28
+ end
29
+ end
30
+
31
+ # largest frontcover if multiple
32
+ def frontcover_resource
33
+ fc=@supporting_resources.front_cover
34
+ if fc.length > 0
35
+ if fc.length > 1
36
+ best_found=fc.select{|c| c.versions.last and c.versions.last.image_width}.sort { |c1, c2| c2.versions.last.image_width <=> c1.versions.last.image_width }.first
37
+ if best_found
38
+ # we take larger one
39
+ best_found.versions.last
40
+ else
41
+ # we try first that is not gif
42
+ fc.select{|sr| not sr.versions.last.file_format=="Gif"}.first.versions.last
43
+ end
44
+ else
45
+ fc.first.versions.last
46
+ end
47
+ end
48
+ end
49
+
50
+ def frontcover_url
51
+ if self.frontcover_resource
52
+ self.frontcover_resource.links.first.strip
53
+ end
54
+ end
55
+
56
+ def frontcover_last_updated
57
+ if self.frontcover_resource
58
+ self.frontcover_resource.last_updated
59
+ end
60
+ end
61
+
62
+ def frontcover_mimetype
63
+ if self.frontcover_resource
64
+ self.frontcover_resource.file_mimetype
65
+ end
66
+ end
67
+
68
+ def epub_sample_resource
69
+ es=@supporting_resources.sample_content.select{|sr| sr.versions.last and sr.versions.last.file_format=="Epub"}.first
70
+ if es
71
+ es.versions.last
72
+ end
73
+ end
74
+
75
+ def epub_sample_url
76
+ if self.epub_sample_resource
77
+ self.epub_sample_resource.links.first.strip
78
+ end
79
+ end
80
+
81
+ def epub_sample_last_updated
82
+ if self.epub_sample_resource
83
+ self.epub_sample_resource.last_updated
84
+ end
85
+ end
86
+
87
+ def epub_sample_mimetype
88
+ if self.epub_sample_resource
89
+ self.epub_sample_resource.file_mimetype
90
+ end
91
+ end
92
+
93
+ end
94
+ end
@@ -0,0 +1,87 @@
1
+ require 'onix/subset'
2
+ require 'onix/website'
3
+
4
+ module ONIX
5
+ class Contributor < SubsetDSL
6
+ element "SequenceNumber", :integer
7
+ element "ContributorRole", :subset
8
+ elements "NameIdentifier", :subset
9
+
10
+ element "PersonName", :text
11
+ element "PersonNameInverted", :text
12
+
13
+ element "NamesBeforeKey", :text
14
+ element "KeyNames", :text
15
+
16
+ element "BiographicalNote", :text
17
+ elements "Website", :subset
18
+ element "ContributorPlace", :subset
19
+
20
+ def role
21
+ @contributor_role
22
+ end
23
+
24
+ def identifiers
25
+ @name_identifiers
26
+ end
27
+
28
+ def place
29
+ @contributor_place
30
+ end
31
+
32
+ def name_before_key
33
+ @names_before_key
34
+ end
35
+
36
+ # :category: High level
37
+ # flatten person name (firstname lastname)
38
+ def name
39
+ if @person_name
40
+ @person_name
41
+ else
42
+ if @key_names
43
+ if @names_before_key
44
+ "#{@names_before_key} #{@key_names}"
45
+ else
46
+ @key_names
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ # :category: High level
53
+ # inverted flatten person name
54
+ def inverted_name
55
+ @person_name_inverted
56
+ end
57
+
58
+ # :category: High level
59
+ # biography string with HTML
60
+ def biography
61
+ @biographical_note
62
+ end
63
+
64
+ # :category: High level
65
+ # raw biography string without HTML
66
+ def raw_biography
67
+ if self.biography
68
+ Helper.strip_html(self.biography).gsub(/\s+/, " ")
69
+ else
70
+ nil
71
+ end
72
+ end
73
+ end
74
+
75
+ class ContributorPlace < SubsetDSL
76
+ element "ContributorPlaceRelator", :subset
77
+ element "CountryCode", :subset
78
+
79
+ def relator
80
+ @contributor_place_relator
81
+ end
82
+
83
+ def country_code
84
+ @country_code.code
85
+ end
86
+ end
87
+ end