im_onix 1.1.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (311) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -6
  3. data/README.md +1 -1
  4. data/bin/html_codelist_to_yml.rb +10 -6
  5. data/bin/onix_bench.rb +25 -4
  6. data/bin/onix_pp.rb +26 -26
  7. data/bin/onix_serialize.rb +12 -16
  8. data/data/codelists/codelist-1.yml +4 -5
  9. data/data/codelists/codelist-10.yml +13 -11
  10. data/data/codelists/codelist-100.yml +1 -0
  11. data/data/codelists/codelist-102.yml +3 -2
  12. data/data/codelists/codelist-11.yml +2 -2
  13. data/data/codelists/codelist-12.yml +8 -3
  14. data/data/codelists/codelist-121.yml +46 -17
  15. data/data/codelists/codelist-13.yml +3 -0
  16. data/data/codelists/codelist-139.yml +83 -9
  17. data/data/codelists/codelist-141.yml +4 -4
  18. data/data/codelists/codelist-142.yml +2 -2
  19. data/data/codelists/codelist-143.yml +11 -0
  20. data/data/codelists/codelist-144.yml +2 -2
  21. data/data/codelists/codelist-145.yml +4 -1
  22. data/data/codelists/codelist-147.yml +18 -2
  23. data/data/codelists/codelist-149.yml +1 -0
  24. data/data/codelists/codelist-15.yml +2 -1
  25. data/data/codelists/codelist-150.yml +46 -26
  26. data/data/codelists/codelist-151.yml +4 -1
  27. data/data/codelists/codelist-153.yml +19 -4
  28. data/data/codelists/codelist-154.yml +4 -2
  29. data/data/codelists/codelist-155.yml +3 -1
  30. data/data/codelists/codelist-156.yml +1 -0
  31. data/data/codelists/codelist-158.yml +18 -0
  32. data/data/codelists/codelist-159.yml +1 -1
  33. data/data/codelists/codelist-16.yml +3 -0
  34. data/data/codelists/codelist-160.yml +2 -0
  35. data/data/codelists/codelist-162.yml +2 -0
  36. data/data/codelists/codelist-163.yml +8 -3
  37. data/data/codelists/codelist-165.yml +3 -0
  38. data/data/codelists/codelist-166.yml +7 -2
  39. data/data/codelists/codelist-167.yml +6 -0
  40. data/data/codelists/codelist-168.yml +1 -0
  41. data/data/codelists/codelist-169.yml +2 -2
  42. data/data/codelists/codelist-17.yml +20 -2
  43. data/data/codelists/codelist-170.yml +5 -1
  44. data/data/codelists/codelist-171.yml +1 -0
  45. data/data/codelists/codelist-173.yml +1 -1
  46. data/data/codelists/codelist-175.yml +113 -35
  47. data/data/codelists/codelist-176.yml +2 -2
  48. data/data/codelists/codelist-177.yml +1 -0
  49. data/data/codelists/codelist-178.yml +6 -0
  50. data/data/codelists/codelist-179.yml +1 -0
  51. data/data/codelists/codelist-18.yml +3 -1
  52. data/data/codelists/codelist-184.yml +1 -0
  53. data/data/codelists/codelist-19.yml +5 -4
  54. data/data/codelists/codelist-196.yml +16 -4
  55. data/data/codelists/codelist-197.yml +2 -0
  56. data/data/codelists/codelist-198.yml +7 -0
  57. data/data/codelists/codelist-2.yml +6 -6
  58. data/data/codelists/codelist-20.yml +10 -1
  59. data/data/codelists/codelist-203.yml +1 -1
  60. data/data/codelists/codelist-204.yml +4 -0
  61. data/data/codelists/codelist-21.yml +24 -19
  62. data/data/codelists/codelist-215.yml +9 -0
  63. data/data/codelists/codelist-216.yml +11 -0
  64. data/data/codelists/codelist-217.yml +9 -0
  65. data/data/codelists/codelist-218.yml +5 -0
  66. data/data/codelists/codelist-219.yml +5 -0
  67. data/data/codelists/codelist-22.yml +5 -4
  68. data/data/codelists/codelist-220.yml +10 -0
  69. data/data/codelists/codelist-221.yml +6 -0
  70. data/data/codelists/codelist-222.yml +4 -0
  71. data/data/codelists/codelist-223.yml +4 -0
  72. data/data/codelists/codelist-224.yml +8 -0
  73. data/data/codelists/codelist-225.yml +4 -0
  74. data/data/codelists/codelist-226.yml +7 -0
  75. data/data/codelists/codelist-227.yml +21 -0
  76. data/data/codelists/codelist-228.yml +3 -0
  77. data/data/codelists/codelist-229.yml +5 -0
  78. data/data/codelists/codelist-23.yml +5 -3
  79. data/data/codelists/codelist-230.yml +8 -0
  80. data/data/codelists/codelist-238.yml +23 -0
  81. data/data/codelists/codelist-239.yml +4 -0
  82. data/data/codelists/codelist-24.yml +3 -0
  83. data/data/codelists/codelist-240.yml +6 -0
  84. data/data/codelists/codelist-241.yml +9 -0
  85. data/data/codelists/codelist-242.yml +24 -0
  86. data/data/codelists/codelist-243.yml +9 -0
  87. data/data/codelists/codelist-244.yml +3 -0
  88. data/data/codelists/codelist-245.yml +5 -0
  89. data/data/codelists/codelist-246.yml +4 -0
  90. data/data/codelists/codelist-247.yml +4 -0
  91. data/data/codelists/codelist-25.yml +4 -2
  92. data/data/codelists/codelist-26.yml +28 -18
  93. data/data/codelists/codelist-27.yml +35 -19
  94. data/data/codelists/codelist-28.yml +2 -1
  95. data/data/codelists/codelist-29.yml +8 -3
  96. data/data/codelists/codelist-3.yml +5 -2
  97. data/data/codelists/codelist-30.yml +6 -2
  98. data/data/codelists/codelist-32.yml +7 -0
  99. data/data/codelists/codelist-33.yml +6 -2
  100. data/data/codelists/codelist-34.yml +0 -11
  101. data/data/codelists/codelist-38.yml +1 -1
  102. data/data/codelists/codelist-39.yml +2 -2
  103. data/data/codelists/codelist-41.yml +4 -3
  104. data/data/codelists/codelist-42.yml +0 -12
  105. data/data/codelists/codelist-43.yml +3 -1
  106. data/data/codelists/codelist-44.yml +16 -3
  107. data/data/codelists/codelist-45.yml +8 -3
  108. data/data/codelists/codelist-46.yml +4 -4
  109. data/data/codelists/codelist-48.yml +20 -2
  110. data/data/codelists/codelist-49.yml +268 -1
  111. data/data/codelists/codelist-5.yml +6 -3
  112. data/data/codelists/codelist-51.yml +11 -5
  113. data/data/codelists/codelist-55.yml +2 -2
  114. data/data/codelists/codelist-57.yml +1 -0
  115. data/data/codelists/codelist-58.yml +14 -12
  116. data/data/codelists/codelist-59.yml +10 -1
  117. data/data/codelists/codelist-6.yml +39 -39
  118. data/data/codelists/codelist-60.yml +1 -1
  119. data/data/codelists/codelist-62.yml +2 -1
  120. data/data/codelists/codelist-64.yml +3 -2
  121. data/data/codelists/codelist-65.yml +1 -0
  122. data/data/codelists/codelist-68.yml +2 -2
  123. data/data/codelists/codelist-69.yml +2 -2
  124. data/data/codelists/codelist-7.yml +21 -17
  125. data/data/codelists/codelist-71.yml +16 -6
  126. data/data/codelists/codelist-73.yml +7 -5
  127. data/data/codelists/codelist-74.yml +59 -31
  128. data/data/codelists/codelist-75.yml +1 -1
  129. data/data/codelists/codelist-76.yml +3 -3
  130. data/data/codelists/codelist-78.yml +52 -26
  131. data/data/codelists/codelist-79.yml +16 -7
  132. data/data/codelists/codelist-8.yml +3 -3
  133. data/data/codelists/codelist-80.yml +6 -5
  134. data/data/codelists/codelist-81.yml +8 -5
  135. data/data/codelists/codelist-83.yml +3 -2
  136. data/data/codelists/codelist-85.yml +1 -1
  137. data/data/codelists/codelist-9.yml +7 -3
  138. data/data/codelists/codelist-90.yml +2 -2
  139. data/data/codelists/codelist-91.yml +11 -11
  140. data/data/codelists/codelist-92.yml +1 -1
  141. data/data/codelists/codelist-93.yml +9 -6
  142. data/data/codelists/codelist-96.yml +45 -40
  143. data/data/codelists/codelist-98.yml +6 -3
  144. data/data/codelists/codelist-99.yml +8 -5
  145. data/data/onix21/codelists/codelist-1.yml +2 -2
  146. data/data/onix21/codelists/codelist-10.yml +12 -12
  147. data/data/onix21/codelists/codelist-11.yml +2 -2
  148. data/data/onix21/codelists/codelist-12.yml +3 -3
  149. data/data/onix21/codelists/codelist-121.yml +9 -9
  150. data/data/onix21/codelists/codelist-13.yml +1 -1
  151. data/data/onix21/codelists/codelist-139.yml +6 -6
  152. data/data/onix21/codelists/codelist-141.yml +4 -4
  153. data/data/onix21/codelists/codelist-142.yml +2 -2
  154. data/data/onix21/codelists/codelist-145.yml +2 -2
  155. data/data/onix21/codelists/codelist-147.yml +2 -2
  156. data/data/onix21/codelists/codelist-148.yml +1 -1
  157. data/data/onix21/codelists/codelist-149.yml +1 -1
  158. data/data/onix21/codelists/codelist-15.yml +1 -1
  159. data/data/onix21/codelists/codelist-150.yml +23 -23
  160. data/data/onix21/codelists/codelist-151.yml +1 -1
  161. data/data/onix21/codelists/codelist-153.yml +3 -3
  162. data/data/onix21/codelists/codelist-154.yml +2 -2
  163. data/data/onix21/codelists/codelist-155.yml +1 -1
  164. data/data/onix21/codelists/codelist-158.yml +2 -2
  165. data/data/onix21/codelists/codelist-159.yml +1 -1
  166. data/data/onix21/codelists/codelist-163.yml +2 -2
  167. data/data/onix21/codelists/codelist-166.yml +1 -1
  168. data/data/onix21/codelists/codelist-169.yml +2 -2
  169. data/data/onix21/codelists/codelist-17.yml +2 -2
  170. data/data/onix21/codelists/codelist-173.yml +1 -1
  171. data/data/onix21/codelists/codelist-175.yml +23 -23
  172. data/data/onix21/codelists/codelist-176.yml +2 -2
  173. data/data/onix21/codelists/codelist-18.yml +1 -1
  174. data/data/onix21/codelists/codelist-196.yml +4 -4
  175. data/data/onix21/codelists/codelist-2.yml +6 -6
  176. data/data/onix21/codelists/codelist-203.yml +1 -1
  177. data/data/onix21/codelists/codelist-21.yml +1 -1
  178. data/data/onix21/codelists/codelist-216.yml +2 -2
  179. data/data/onix21/codelists/codelist-218.yml +1 -1
  180. data/data/onix21/codelists/codelist-22.yml +3 -3
  181. data/data/onix21/codelists/codelist-23.yml +2 -2
  182. data/data/onix21/codelists/codelist-25.yml +2 -2
  183. data/data/onix21/codelists/codelist-26.yml +18 -18
  184. data/data/onix21/codelists/codelist-27.yml +18 -18
  185. data/data/onix21/codelists/codelist-28.yml +1 -1
  186. data/data/onix21/codelists/codelist-29.yml +3 -3
  187. data/data/onix21/codelists/codelist-3.yml +2 -2
  188. data/data/onix21/codelists/codelist-30.yml +1 -1
  189. data/data/onix21/codelists/codelist-32.yml +1 -1
  190. data/data/onix21/codelists/codelist-33.yml +2 -2
  191. data/data/onix21/codelists/codelist-34.yml +2 -2
  192. data/data/onix21/codelists/codelist-38.yml +1 -1
  193. data/data/onix21/codelists/codelist-39.yml +2 -2
  194. data/data/onix21/codelists/codelist-41.yml +3 -3
  195. data/data/onix21/codelists/codelist-43.yml +1 -1
  196. data/data/onix21/codelists/codelist-44.yml +2 -2
  197. data/data/onix21/codelists/codelist-45.yml +4 -4
  198. data/data/onix21/codelists/codelist-46.yml +3 -3
  199. data/data/onix21/codelists/codelist-48.yml +2 -2
  200. data/data/onix21/codelists/codelist-49.yml +12 -12
  201. data/data/onix21/codelists/codelist-5.yml +3 -3
  202. data/data/onix21/codelists/codelist-51.yml +3 -3
  203. data/data/onix21/codelists/codelist-55.yml +2 -2
  204. data/data/onix21/codelists/codelist-58.yml +10 -10
  205. data/data/onix21/codelists/codelist-59.yml +2 -2
  206. data/data/onix21/codelists/codelist-6.yml +36 -36
  207. data/data/onix21/codelists/codelist-60.yml +1 -1
  208. data/data/onix21/codelists/codelist-62.yml +1 -1
  209. data/data/onix21/codelists/codelist-64.yml +2 -2
  210. data/data/onix21/codelists/codelist-68.yml +2 -2
  211. data/data/onix21/codelists/codelist-69.yml +2 -2
  212. data/data/onix21/codelists/codelist-7.yml +17 -17
  213. data/data/onix21/codelists/codelist-71.yml +2 -2
  214. data/data/onix21/codelists/codelist-73.yml +5 -5
  215. data/data/onix21/codelists/codelist-74.yml +28 -28
  216. data/data/onix21/codelists/codelist-75.yml +1 -1
  217. data/data/onix21/codelists/codelist-76.yml +3 -3
  218. data/data/onix21/codelists/codelist-78.yml +24 -24
  219. data/data/onix21/codelists/codelist-79.yml +6 -6
  220. data/data/onix21/codelists/codelist-8.yml +3 -3
  221. data/data/onix21/codelists/codelist-80.yml +5 -5
  222. data/data/onix21/codelists/codelist-81.yml +4 -4
  223. data/data/onix21/codelists/codelist-83.yml +2 -2
  224. data/data/onix21/codelists/codelist-85.yml +1 -1
  225. data/data/onix21/codelists/codelist-9.yml +3 -3
  226. data/data/onix21/codelists/codelist-90.yml +2 -2
  227. data/data/onix21/codelists/codelist-91.yml +6 -6
  228. data/data/onix21/codelists/codelist-92.yml +1 -1
  229. data/data/onix21/codelists/codelist-93.yml +6 -6
  230. data/data/onix21/codelists/codelist-96.yml +1 -1
  231. data/data/onix21/codelists/codelist-98.yml +2 -2
  232. data/data/onix21/codelists/codelist-99.yml +4 -4
  233. data/doc-src/handlers.rb +32 -2
  234. data/im_onix.gemspec +3 -1
  235. data/lib/onix/addressee.rb +5 -3
  236. data/lib/onix/ancillary_content.rb +7 -0
  237. data/lib/onix/audience.rb +7 -0
  238. data/lib/onix/audience_range.rb +10 -0
  239. data/lib/onix/barcode.rb +6 -0
  240. data/lib/onix/builder.rb +197 -0
  241. data/lib/onix/cited_content.rb +15 -0
  242. data/lib/onix/code.rb +322 -42
  243. data/lib/onix/collateral_detail.rb +9 -13
  244. data/lib/onix/collection.rb +14 -4
  245. data/lib/onix/collection_sequence.rb +3 -3
  246. data/lib/onix/comparison_product_price.rb +17 -0
  247. data/lib/onix/complexity.rb +6 -0
  248. data/lib/onix/content_detail.rb +7 -0
  249. data/lib/onix/content_item.rb +38 -0
  250. data/lib/onix/contributor.rb +56 -34
  251. data/lib/onix/contributor_place.rb +12 -0
  252. data/lib/onix/copyright_statement.rb +8 -0
  253. data/lib/onix/date.rb +107 -56
  254. data/lib/onix/descriptive_detail.rb +98 -49
  255. data/lib/onix/discount.rb +9 -0
  256. data/lib/onix/discount_coded.rb +3 -3
  257. data/lib/onix/entity.rb +22 -37
  258. data/lib/onix/epub_license.rb +8 -0
  259. data/lib/onix/epub_license_expression.rb +7 -0
  260. data/lib/onix/epub_usage_constraint.rb +5 -3
  261. data/lib/onix/epub_usage_limit.rb +2 -2
  262. data/lib/onix/error.rb +2 -0
  263. data/lib/onix/extent.rb +4 -3
  264. data/lib/onix/header.rb +17 -0
  265. data/lib/onix/helper.rb +3 -12
  266. data/lib/onix/identifier.rb +81 -57
  267. data/lib/onix/language.rb +5 -2
  268. data/lib/onix/market.rb +2 -1
  269. data/lib/onix/market_publishing_detail.rb +14 -3
  270. data/lib/onix/measure.rb +7 -0
  271. data/lib/onix/onix21.rb +26 -24
  272. data/lib/onix/onix_message.rb +40 -48
  273. data/lib/onix/page_run.rb +6 -0
  274. data/lib/onix/price.rb +44 -11
  275. data/lib/onix/prize.rb +11 -0
  276. data/lib/onix/product.rb +45 -17
  277. data/lib/onix/product_classification.rb +8 -0
  278. data/lib/onix/product_contact.rb +11 -0
  279. data/lib/onix/product_part.rb +25 -10
  280. data/lib/onix/{product_supplies_extractor.rb → product_supplies_methods.rb} +3 -3
  281. data/lib/onix/product_supply.rb +4 -3
  282. data/lib/onix/professional_affiliation.rb +6 -0
  283. data/lib/onix/publisher_representative.rb +11 -0
  284. data/lib/onix/publishing_detail.rb +22 -9
  285. data/lib/onix/related_material.rb +6 -2
  286. data/lib/onix/related_product.rb +14 -6
  287. data/lib/onix/related_work.rb +5 -3
  288. data/lib/onix/resource_feature.rb +9 -0
  289. data/lib/onix/resource_version.rb +85 -0
  290. data/lib/onix/resource_version_feature.rb +22 -0
  291. data/lib/onix/returns_conditions.rb +8 -0
  292. data/lib/onix/review_rating.rb +7 -0
  293. data/lib/onix/sales_outlet.rb +12 -2
  294. data/lib/onix/sales_restriction.rb +7 -16
  295. data/lib/onix/sales_rights.rb +6 -3
  296. data/lib/onix/sender.rb +5 -5
  297. data/lib/onix/serializer.rb +131 -87
  298. data/lib/onix/subject.rb +11 -6
  299. data/lib/onix/subset.rb +255 -104
  300. data/lib/onix/supplier_own_coding.rb +7 -0
  301. data/lib/onix/supply_contact.rb +9 -0
  302. data/lib/onix/supply_detail.rb +28 -5
  303. data/lib/onix/supporting_resource.rb +10 -113
  304. data/lib/onix/tax.rb +11 -5
  305. data/lib/onix/territory.rb +8 -4
  306. data/lib/onix/text_content.rb +13 -0
  307. data/lib/onix/text_item.rb +12 -0
  308. data/lib/onix/title_detail.rb +4 -3
  309. data/lib/onix/title_element.rb +16 -13
  310. data/lib/onix/website.rb +4 -3
  311. metadata +89 -3
data/lib/onix/code.rb CHANGED
@@ -1,19 +1,24 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require 'yaml'
3
2
 
4
3
  module ONIX
5
- module CodeHelper
4
+ class InvalidCodeAlias < StandardError
5
+ end
6
+
7
+ module CodeMethods
6
8
  def parse(n)
9
+ parse_attributes(n.attributes)
7
10
  @code = n.text
8
11
  @human = self.class.hash[n.text]
9
12
  end
10
13
 
11
14
  # Humanized string code
15
+ # @return [String]
12
16
  def human
13
17
  @human
14
18
  end
15
19
 
16
20
  # ONIX code
21
+ # @return [String]
17
22
  def onix
18
23
  @code
19
24
  end
@@ -27,57 +32,63 @@ module ONIX
27
32
  # @return [String] humanized string (eg: "Digital watermarking" become DigitalWatermarking, "PDF" become Pdf, "BISAC Subject Heading" become BisacSubjectHeading, etc)
28
33
  attr_accessor :human
29
34
 
30
- include CodeHelper
31
-
32
- # create Code from ONIX code
33
- # @param [String] code ONIX code
34
- # @return [Code]
35
- def self.from_code(code)
36
- obj = self.new
37
- obj.code = code
38
- obj.human = self.hash[code]
39
- obj
40
- end
41
-
42
- # create Code from human readable code
43
- # @param [String] human human readable code
44
- # @return [Code]
45
- def self.from_human(human)
46
- obj = self.new
47
- obj.human = human
48
- obj.code = self.hash.key(human)
49
- obj
50
- end
35
+ include CodeMethods
36
+
37
+ class << self
38
+ # create Code from ONIX code
39
+ # @param [String] code ONIX code
40
+ # @return [Code]
41
+ def from_code(code)
42
+ obj = self.new
43
+ obj.code = code
44
+ obj.human = self.hash[code]
45
+ obj
46
+ end
51
47
 
52
- private
48
+ # create Code from human readable code
49
+ # @param [String] human human readable code
50
+ # @return [Code]
51
+ def from_human(human)
52
+ obj = self.new
53
+ obj.human = human
54
+ obj.code = self.hash.key(human)
55
+ unless obj.code
56
+ raise InvalidCodeAlias, [self.to_s, human]
57
+ end
58
+ obj
59
+ end
53
60
 
54
- def self.hash
55
- {}
61
+ def hash
62
+ {}
63
+ end
56
64
  end
57
65
  end
58
66
 
59
67
  class CodeFromYaml < Code
60
- def self.hash
61
- @hash ||= YAML.load(File.open(File.dirname(__FILE__) + "/../../data/codelists/codelist-#{self.code_ident}.yml"))[:codelist]
62
- end
68
+ class << self
69
+ def hash
70
+ @hash ||= YAML.load(File.open(File.dirname(__FILE__) + "/../../data/codelists/codelist-#{self.code_ident}.yml"))[:codelist].freeze
71
+ end
63
72
 
64
- def self.list
65
- self.hash.to_a.map { |h| h.first }
66
- end
73
+ def list
74
+ self.hash.keys
75
+ end
67
76
 
68
- def self.code_ident
69
- nil
70
- end
77
+ def code_ident
78
+ nil
79
+ end
71
80
 
72
- def self.code_identifier code
73
- define_singleton_method :code_ident do
74
- return code
81
+ def code_identifier code
82
+ define_singleton_method :code_ident do
83
+ return code
84
+ end
75
85
  end
76
86
  end
77
87
  end
78
88
 
79
89
  class CodeFromYamlWithMime < CodeFromYaml
80
90
  # main formats
91
+ # @return [String]
81
92
  def mimetype
82
93
  case self.human
83
94
  when "Epub"
@@ -104,14 +115,30 @@ module ONIX
104
115
  code_identifier 2
105
116
  end
106
117
 
118
+ class RecordSourceType < CodeFromYaml
119
+ code_identifier 3
120
+ end
121
+
107
122
  class ProductIDType < CodeFromYaml
108
123
  code_identifier 5
109
124
  end
110
125
 
126
+ class ProductClassificationType < CodeFromYaml
127
+ code_identifier 9
128
+ end
129
+
130
+ class TradeCategory < CodeFromYaml
131
+ code_identifier 12
132
+ end
133
+
111
134
  class CollectionIDType < CodeFromYaml
112
135
  code_identifier 13
113
136
  end
114
137
 
138
+ class TextCase < CodeFromYaml
139
+ code_identifier 14
140
+ end
141
+
115
142
  class TitleType < CodeFromYaml
116
143
  code_identifier 15
117
144
  end
@@ -124,6 +151,18 @@ module ONIX
124
151
  code_identifier 17
125
152
  end
126
153
 
154
+ class NameType < CodeFromYaml
155
+ code_identifier 18
156
+ end
157
+
158
+ class UnnamedPersons < CodeFromYaml
159
+ code_identifier 19
160
+ end
161
+
162
+ class ConferenceRole < CodeFromYaml
163
+ code_identifier 20
164
+ end
165
+
127
166
  class EditionType < CodeFromYaml
128
167
  code_identifier 21
129
168
  end
@@ -140,6 +179,10 @@ module ONIX
140
179
  code_identifier 24
141
180
  end
142
181
 
182
+ class AncillaryContentType < CodeFromYaml
183
+ code_identifier 25
184
+ end
185
+
143
186
  class SubjectSchemeIdentifier < CodeFromYaml
144
187
  code_identifier 27
145
188
  end
@@ -148,6 +191,38 @@ module ONIX
148
191
  code_identifier 28
149
192
  end
150
193
 
194
+ class AudienceCodeType < CodeFromYaml
195
+ code_identifier 29
196
+ end
197
+
198
+ class AudienceRangeQualifier < CodeFromYaml
199
+ code_identifier 30
200
+ end
201
+
202
+ class AudienceRangePrecision < CodeFromYaml
203
+ code_identifier 31
204
+ end
205
+
206
+ class ComplexitySchemeIdentifier < CodeFromYaml
207
+ code_identifier 32
208
+ end
209
+
210
+ class TextFormat < CodeFromYaml
211
+ code_identifier 34
212
+ end
213
+
214
+ class PrizeCode < CodeFromYaml
215
+ code_identifier 41
216
+ end
217
+
218
+ class TextItemType < CodeFromYaml
219
+ code_identifier 42
220
+ end
221
+
222
+ class TextItemIDType < CodeFromYaml
223
+ code_identifier 43
224
+ end
225
+
151
226
  class IDType < CodeFromYaml
152
227
  code_identifier 44
153
228
  end
@@ -158,6 +233,9 @@ module ONIX
158
233
  class AddresseeIDType < IDType
159
234
  end
160
235
 
236
+ class RecordSourceIDType < IDType
237
+ end
238
+
161
239
  class PublisherIDType < IDType
162
240
  end
163
241
 
@@ -167,6 +245,12 @@ module ONIX
167
245
  class NameIDType < IDType
168
246
  end
169
247
 
248
+ class NameIDType < IDType
249
+ end
250
+
251
+ class ProductContactIDType < IDType
252
+ end
253
+
170
254
  class PublishingRole < CodeFromYaml
171
255
  code_identifier 45
172
256
  end
@@ -175,14 +259,26 @@ module ONIX
175
259
  code_identifier 46
176
260
  end
177
261
 
262
+ class MeasureType < CodeFromYaml
263
+ code_identifier 48
264
+ end
265
+
178
266
  class RegionCode < CodeFromYaml
179
267
  code_identifier 49
180
268
  end
181
269
 
270
+ class MeasureUnitCode < CodeFromYaml
271
+ code_identifier 50
272
+ end
273
+
182
274
  class ProductRelationCode < CodeFromYaml
183
275
  code_identifier 51
184
276
  end
185
277
 
278
+ class ReturnsCodeType < CodeFromYaml
279
+ code_identifier 53
280
+ end
281
+
186
282
  class DateFormat < CodeFromYaml
187
283
  code_identifier 55
188
284
  end
@@ -199,6 +295,10 @@ module ONIX
199
295
  code_identifier 59
200
296
  end
201
297
 
298
+ class PricePer < CodeFromYaml
299
+ code_identifier 60
300
+ end
301
+
202
302
  class PriceStatus < CodeFromYaml
203
303
  code_identifier 61
204
304
  end
@@ -223,10 +323,18 @@ module ONIX
223
323
  code_identifier 69
224
324
  end
225
325
 
326
+ class StockQuantityCodeType < CodeFromYaml
327
+ code_identifier 70
328
+ end
329
+
226
330
  class SalesRestrictionType < CodeFromYaml
227
331
  code_identifier 71
228
332
  end
229
333
 
334
+ class ThesisType < CodeFromYaml
335
+ code_identifier 72
336
+ end
337
+
230
338
  class WebsiteRole < CodeFromYaml
231
339
  code_identifier 73
232
340
  end
@@ -239,10 +347,50 @@ module ONIX
239
347
  code_identifier 79
240
348
  end
241
349
 
350
+ class ProductPackaging < CodeFromYaml
351
+ code_identifier 80
352
+ end
353
+
242
354
  class ProductContentType < CodeFromYaml
243
355
  code_identifier 81
244
356
  end
245
357
 
358
+ class BibleContents < CodeFromYaml
359
+ code_identifier 82
360
+ end
361
+
362
+ class BibleVersion < CodeFromYaml
363
+ code_identifier 83
364
+ end
365
+
366
+ class StudyBibleType < CodeFromYaml
367
+ code_identifier 84
368
+ end
369
+
370
+ class BiblePurpose < CodeFromYaml
371
+ code_identifier 85
372
+ end
373
+
374
+ class BibleTextOrganization < CodeFromYaml
375
+ code_identifier 86
376
+ end
377
+
378
+ class BibleReferenceLocation < CodeFromYaml
379
+ code_identifier 87
380
+ end
381
+
382
+ class ReligiousTextIdentifier < CodeFromYaml
383
+ code_identifier 88
384
+ end
385
+
386
+ class ReligiousTextFeatureType < CodeFromYaml
387
+ code_identifier 89
388
+ end
389
+
390
+ class ReligiousTextFeatureCode < CodeFromYaml
391
+ code_identifier 90
392
+ end
393
+
246
394
  class CountryCode < CodeFromYaml
247
395
  code_identifier 91
248
396
  end
@@ -259,10 +407,30 @@ module ONIX
259
407
  code_identifier 93
260
408
  end
261
409
 
410
+ class BibleTextFeature < CodeFromYaml
411
+ code_identifier 97
412
+ end
413
+
414
+ class DiscountCodeType < CodeFromYaml
415
+ code_identifier 100
416
+ end
417
+
262
418
  class SalesOutletIDType < CodeFromYaml
263
419
  code_identifier 102
264
420
  end
265
421
 
422
+ class ScriptCode < CodeFromYaml
423
+ code_identifier 121
424
+ end
425
+
426
+ class BarcodeType < CodeFromYaml
427
+ code_identifier 141
428
+ end
429
+
430
+ class PositionOnProduct < CodeFromYaml
431
+ code_identifier 142
432
+ end
433
+
266
434
  class EpubTechnicalProtection < CodeFromYaml
267
435
  code_identifier 144
268
436
  end
@@ -283,10 +451,6 @@ module ONIX
283
451
  code_identifier 148
284
452
  end
285
453
 
286
- class CollectionSequenceType < CodeFromYaml
287
- code_identifier 197
288
- end
289
-
290
454
  class TitleElementLevel < CodeFromYaml
291
455
  code_identifier 149
292
456
  end
@@ -299,6 +463,10 @@ module ONIX
299
463
  code_identifier 151
300
464
  end
301
465
 
466
+ class Illustrated < CodeFromYaml
467
+ code_identifier 152
468
+ end
469
+
302
470
  class TextType < CodeFromYaml
303
471
  code_identifier 153
304
472
  end
@@ -311,6 +479,14 @@ module ONIX
311
479
  code_identifier 155
312
480
  end
313
481
 
482
+ class CitedContentType < CodeFromYaml
483
+ code_identifier 156
484
+ end
485
+
486
+ class SourceType < CodeFromYaml
487
+ code_identifier 157
488
+ end
489
+
314
490
  class ResourceContentType < CodeFromYaml
315
491
  code_identifier 158
316
492
  end
@@ -343,18 +519,46 @@ module ONIX
343
519
  code_identifier 164
344
520
  end
345
521
 
522
+ class SupplierCodeType < CodeFromYaml
523
+ code_identifier 165
524
+ end
525
+
346
526
  class SupplyDateRole < CodeFromYaml
347
527
  code_identifier 166
348
528
  end
349
529
 
530
+ class PriceConditionType < CodeFromYaml
531
+ code_identifier 167
532
+ end
533
+
534
+ class PriceConditionQuantityType < CodeFromYaml
535
+ code_identifier 168
536
+ end
537
+
538
+ class QuantityUnit < CodeFromYaml
539
+ code_identifier 169
540
+ end
541
+
542
+ class DiscountType < CodeFromYaml
543
+ code_identifier 170
544
+ end
545
+
350
546
  class TaxType < CodeFromYaml
351
547
  code_identifier 171
352
548
  end
353
549
 
550
+ class CurrencyZone < CodeFromYaml
551
+ code_identifier 172
552
+ end
553
+
354
554
  class PriceDateRole < CodeFromYaml
355
555
  code_identifier 173
356
556
  end
357
557
 
558
+ class PrintedOnProduct < CodeFromYaml
559
+ code_identifier 174
560
+ end
561
+
358
562
  class ProductFormDetail < CodeFromYamlWithMime
359
563
  code_identifier 175
360
564
  end
@@ -366,4 +570,80 @@ module ONIX
366
570
  class SupportingResourceFileFormat < CodeFromYamlWithMime
367
571
  code_identifier 178
368
572
  end
573
+
574
+ class PriceCodeType < CodeFromYaml
575
+ code_identifier 179
576
+ end
577
+
578
+ class CollectionSequenceType < CodeFromYaml
579
+ code_identifier 197
580
+ end
581
+
582
+ class ProductContactRole < CodeFromYaml
583
+ code_identifier 198
584
+ end
585
+
586
+ class ReturnsCode < CodeFromYaml
587
+ code_identifier 204
588
+ end
589
+
590
+ class Proximity < CodeFromYaml
591
+ code_identifier 215
592
+ end
593
+
594
+ class VelocityMetric < CodeFromYaml
595
+ code_identifier 216
596
+ end
597
+
598
+ class PriceIDType < CodeFromYaml
599
+ code_identifier 217
600
+ end
601
+
602
+ class EpubLicenseExpressionType < CodeFromYaml
603
+ code_identifier 218
604
+ end
605
+
606
+ class CopyrightType < CodeFromYaml
607
+ code_identifier 219
608
+ end
609
+
610
+ class FundingIDType < CodeFromYaml
611
+ code_identifier 228
612
+ end
613
+
614
+ class Gender < CodeFromYaml
615
+ code_identifier 229
616
+ end
617
+
618
+ class PriceConstraintType < CodeFromYaml
619
+ code_identifier 230
620
+ end
621
+
622
+ class SupplyContactRole < CodeFromYaml
623
+ code_identifier 239
624
+ end
625
+
626
+ class AVItemType < CodeFromYaml
627
+ code_identifier 240
628
+ end
629
+
630
+ class AVItemIDType < CodeFromYaml
631
+ code_identifier 241
632
+ end
633
+
634
+ class EventIDType < CodeFromYaml
635
+ code_identifier 244
636
+ end
637
+
638
+ class EventType < CodeFromYaml
639
+ code_identifier 245
640
+ end
641
+
642
+ class EventStatus < CodeFromYaml
643
+ code_identifier 246
644
+ end
645
+
646
+ class OccurrenceDateRole < CodeFromYaml
647
+ code_identifier 247
648
+ end
369
649
  end
@@ -1,18 +1,14 @@
1
- module ONIX
2
- class TextContent < SubsetDSL
3
- element "TextType", :subset, :shortcut => :type
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
- end
1
+ require 'onix/text_content'
2
+ require 'onix/supporting_resource'
3
+ require 'onix/cited_content'
4
+ require 'onix/prize'
12
5
 
6
+ module ONIX
13
7
  class CollateralDetail < SubsetDSL
14
- elements "TextContent", :subset
15
- elements "SupportingResource", :subset
8
+ elements "TextContent", :subset, :cardinality => 0..n
9
+ elements "CitedContent", :subset, :cardinality => 0..n
10
+ elements "SupportingResource", :subset, :cardinality => 0..n
11
+ elements "Prize", :subset, :cardinality => 0..n
16
12
 
17
13
  # @!group High level
18
14
 
@@ -1,15 +1,23 @@
1
+ require 'onix/collection_sequence'
2
+
1
3
  module ONIX
2
4
  class Collection < SubsetDSL
3
- element "CollectionType", :subset, :shortcut => :type
4
- elements "CollectionIdentifier", :subset, :shortcut => :identifiers
5
- elements "TitleDetail", :subset
6
- elements "CollectionSequence", :subset, :shortcut => :sequences
5
+ element "CollectionType", :subset, :shortcut => :type, :cardinality => 1
6
+ element "SourceName", :text, :cardinality => 0..1
7
+ elements "CollectionIdentifier", :subset, :shortcut => :identifiers, :cardinality => 0..n
8
+ elements "CollectionSequence", :subset, :shortcut => :sequences, :cardinality => 0..n
9
+ elements "TitleDetail", :subset, :cardinality => 0..n
10
+ elements "Contributor", :subset, :cardinality => 0..n
11
+ elements "ContributorStatement", :text, :cardinality => 0..n
12
+ elements "ContributorStatement", :text, :cardinality => 0..n
13
+ element "NoContributor", :bool, :cardinality => 0..1
7
14
 
8
15
  scope :publisher, lambda { human_code_match(:collection_type, "PublisherCollection") }
9
16
 
10
17
  # @!group High level
11
18
 
12
19
  # collection title string
20
+ # @return [String]
13
21
  def title
14
22
  if collection_title_element
15
23
  collection_title_element.title
@@ -17,12 +25,14 @@ module ONIX
17
25
  end
18
26
 
19
27
  # collection subtitle string
28
+ # @return [String]
20
29
  def subtitle
21
30
  if collection_title_element
22
31
  collection_title_element.subtitle
23
32
  end
24
33
  end
25
34
 
35
+ # @return [TitleElement]
26
36
  def collection_title_element
27
37
  distinctive_title = @title_details.distinctive_title.first
28
38
  #select { |td| td.type.human=~/DistinctiveTitle/}.first
@@ -1,7 +1,7 @@
1
1
  module ONIX
2
2
  class CollectionSequence < SubsetDSL
3
- element "CollectionSequenceType", :subset, :shortcut => :type
4
- element "CollectionSequenceTypeName", :string, :shortcut => :type_name
5
- element "CollectionSequenceNumber", :string, :shortcut => :number
3
+ element "CollectionSequenceType", :subset, :shortcut => :type, :cardinality => 1
4
+ element "CollectionSequenceTypeName", :string, :shortcut => :type_name, :cardinality => 0..1
5
+ element "CollectionSequenceNumber", :string, :shortcut => :number, :cardinality => 1
6
6
  end
7
7
  end
@@ -0,0 +1,17 @@
1
+ require 'onix/code'
2
+ require 'onix/identifier'
3
+
4
+ module ONIX
5
+ class ComparisonProductPrice < SubsetDSL
6
+ elements "ProductIdentifier", :subset, :cardinality => 1..n
7
+ element "PriceType", :subset, :shortcut => :type, :cardinality => 0..1
8
+ element "PriceAmount", :float,
9
+ {
10
+ :shortcut => :amount,
11
+ :parse_lambda => lambda { |v| (v * 100).round },
12
+ :serialize_lambda => lambda { |v| v / 100.0 },
13
+ :cardinality => 1
14
+ }
15
+ element "CurrencyCode", :text, :shortcut => :currency, :cardinality => 0..1
16
+ end
17
+ end
@@ -0,0 +1,6 @@
1
+ module ONIX
2
+ class Complexity < SubsetDSL
3
+ element "ComplexitySchemeIdentifier", :subset, :cardinality => 1
4
+ element "ComplexityCode", :text, :cardinality => 1
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ require 'onix/content_item'
2
+
3
+ module ONIX
4
+ class ContentDetail < SubsetDSL
5
+ elements "ContentItem", :subset, :cardinality => 0..n
6
+ end
7
+ end
@@ -0,0 +1,38 @@
1
+ require 'onix/text_item'
2
+ require 'onix/contributor'
3
+ require 'onix/language'
4
+ require 'onix/subject'
5
+ require 'onix/title_detail'
6
+ require 'onix/text_content'
7
+ require 'onix/cited_content'
8
+ require 'onix/supporting_resource'
9
+ require 'onix/related_work'
10
+ require 'onix/related_product'
11
+
12
+ module ONIX
13
+ class ContentItem < SubsetDSL
14
+ element "LevelSequenceNumber", :integer, :cardinality => 0..1
15
+ element "TextItem", :subset, :cardinality => 0..1
16
+
17
+ # element "AVItem", :subset, :cardinality => 0..1
18
+
19
+
20
+ element "ComponentTypeName", :text, :cardinality => 0..1
21
+ element "ComponentNumber", :text, :cardinality => 0..1
22
+ elements "TitleDetail", :subset, :cardinality => 0..n
23
+ elements "Contributor", :subset, :cardinality => 0..n
24
+ elements "ContributorStatement", :text, :cardinality => 0..n
25
+ element "NoContributor", :bool, :cardinality => 0..1
26
+ elements "Language", :subset, :cardinality => 0..n
27
+ elements "Subject", :subset, :cardinality => 0..n
28
+
29
+ # elements "NameAsSubject", :subset, :cardinality => 0..n
30
+
31
+
32
+ elements "TextContent", :subset, :cardinality => 0..n
33
+ elements "CitedContent", :subset, :cardinality => 0..n
34
+ elements "SupportingResource", :subset, :cardinality => 0..n
35
+ elements "RelatedWork", :subset, :cardinality => 0..n
36
+ elements "RelatedProduct", :subset, :cardinality => 0..n
37
+ end
38
+ end