im_onix 1.0.2

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 (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