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
@@ -15,7 +15,7 @@
15
15
  AT: Austria
16
16
  AU: Australia
17
17
  AW: Aruba
18
- AX: "ÅlandIslands"
18
+ AX: AlandIslands
19
19
  AZ: Azerbaijan
20
20
  BA: BosniaAndHerzegovina
21
21
  BB: Barbados
@@ -26,7 +26,7 @@
26
26
  BH: Bahrain
27
27
  BI: Burundi
28
28
  BJ: Benin
29
- BL: SaintBarthélemy
29
+ BL: SaintBarthelemy
30
30
  BM: Bermuda
31
31
  BN: BruneiDarussalam
32
32
  BO: BoliviaPlurinationalStateOf
@@ -54,7 +54,7 @@
54
54
  CS: SerbiaAndMontenegro
55
55
  CU: Cuba
56
56
  CV: CapeVerde
57
- CW: Curaçao
57
+ CW: Curacao
58
58
  CX: ChristmasIsland
59
59
  CY: Cyprus
60
60
  CZ: CzechRepublic
@@ -94,7 +94,7 @@
94
94
  GS: SouthGeorgiaAndTheSouthSandwichIslands
95
95
  GT: Guatemala
96
96
  GU: Guam
97
- GW: Guineabissau
97
+ GW: GuineaBissau
98
98
  GY: Guyana
99
99
  HK: HongKong
100
100
  HM: HeardIslandAndMcdonaldIslands
@@ -189,7 +189,7 @@
189
189
  PW: Palau
190
190
  PY: Paraguay
191
191
  QA: Qatar
192
- RE: Réunion
192
+ RE: Reunion
193
193
  RO: Romania
194
194
  RS: Serbia
195
195
  RU: RussianFederation
@@ -222,7 +222,7 @@
222
222
  TH: Thailand
223
223
  TJ: Tajikistan
224
224
  TK: Tokelau
225
- TL: Timorleste
225
+ TL: TimorLeste
226
226
  TM: Turkmenistan
227
227
  TN: Tunisia
228
228
  TO: Tonga
@@ -2,7 +2,7 @@
2
2
  :codelist:
3
3
  '01': Proprietary
4
4
  '02': Proprietary
5
- '04': BörsenvereinVerkehrsnummer
5
+ '04': BorsenvereinVerkehrsnummer
6
6
  '05': GermanIsbnAgencyPublisherIdentifier
7
7
  '06': Gln
8
8
  '07': San
@@ -3,13 +3,13 @@
3
3
  '00': Unspecified
4
4
  '01': PublisherToRetailers
5
5
  '02': PublishersExclusiveDistributorToRetailers
6
- '03': PublishersNonexclusiveDistributorToRetailers
6
+ '03': PublishersNonExclusiveDistributorToRetailers
7
7
  '04': Wholesaler
8
8
  '05': SalesAgent
9
9
  '06': PublishersDistributorToRetailers
10
10
  '07': PodSupplier
11
- 08: Retailer
12
- 09: PublisherToEndcustomers
13
- '10': ExclusiveDistributorToEndcustomers
14
- '11': NonexclusiveDistributorToEndcustomers
15
- '12': DistributorToEndcustomers
11
+ '08': Retailer
12
+ '09': PublisherToEndCustomers
13
+ '10': ExclusiveDistributorToEndCustomers
14
+ '11': NonExclusiveDistributorToEndCustomers
15
+ '12': DistributorToEndCustomers
@@ -66,7 +66,7 @@
66
66
  GNF: GuineaFranc
67
67
  GRD: GreeceDrachma
68
68
  GTQ: Quetzal
69
- GWP: GuineabissauPeso
69
+ GWP: GuineaBissauPeso
70
70
  GYD: GuyanaDollar
71
71
  HKD: HongKongDollar
72
72
  HNL: Lempira
@@ -5,8 +5,8 @@
5
5
  BRN: Brown
6
6
  BUR: Burgundymaroon
7
7
  CRE: Cream
8
- FCO: Fourcolor
9
- FCS: FourcolorAndSpotcolor
8
+ FCO: FourColor
9
+ FCS: FourColorAndSpotColor
10
10
  GLD: Gold
11
11
  GRN: Green
12
12
  GRY: Grey
@@ -7,8 +7,8 @@
7
7
  '05': BondedBuffaloGrain
8
8
  '06': BondedCalfGrain
9
9
  '07': BondedCordova
10
- 08: BondedEelskin
11
- 09: BondedOstraleg
10
+ '08': BondedEelskin
11
+ '09': BondedOstraleg
12
12
  '10': BondedOstrich
13
13
  '11': BondedReptileGrain
14
14
  '12': BondedLeather
@@ -20,7 +20,7 @@
20
20
  '18': SofthideLeather
21
21
  '19': Metal
22
22
  '20': Velvet
23
- '21': Motherofpearl
23
+ '21': MotherOfPearl
24
24
  '22': Papyrus
25
- '23': Géltex
25
+ '23': Geltex
26
26
  '24': Guaflex
data/doc-src/handlers.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'yaml'
1
2
  class DSLHelpers
2
3
  def self.inflectors
3
4
  [['ox', 'oxes'],
@@ -47,6 +48,10 @@ class ElementDSLAttributeHandler < YARD::Handlers::Ruby::Base
47
48
  handles method_call(:element)
48
49
  namespace_only
49
50
 
51
+ def n
52
+ Float::INFINITY
53
+ end
54
+
50
55
  process do
51
56
  name = statement.parameters[0].jump(:tstring_content, :ident).source
52
57
  type = statement.parameters[1].jump(:tstring_content, :ident).source
@@ -93,6 +98,10 @@ class ElementsDSLAttributeHandler < YARD::Handlers::Ruby::Base
93
98
  handles method_call(:elements)
94
99
  namespace_only
95
100
 
101
+ def n
102
+ Float::INFINITY
103
+ end
104
+
96
105
  process do
97
106
  name = statement.parameters[0].jump(:tstring_content, :ident).source
98
107
  type = statement.parameters[1].jump(:tstring_content, :ident).source
@@ -133,10 +142,8 @@ class ElementsDSLAttributeHandler < YARD::Handlers::Ruby::Base
133
142
  register(object)
134
143
  end
135
144
  end
136
-
137
145
  end
138
146
 
139
-
140
147
  class DefDelegatorAttributeHandler < YARD::Handlers::Ruby::Base
141
148
  handles method_call(:def_delegator)
142
149
  namespace_only
@@ -152,3 +159,26 @@ class DefDelegatorAttributeHandler < YARD::Handlers::Ruby::Base
152
159
  register(object)
153
160
  end
154
161
  end
162
+
163
+ class CodeAttributeHandler < YARD::Handlers::Ruby::Base
164
+ handles method_call(:code_identifier)
165
+ namespace_only
166
+
167
+ process do
168
+ name = statement.parameters[0].jump(:tstring_content, :ident).source
169
+ codelist_filename = File.dirname(__FILE__) + "/../data/codelists/codelist-#{name}.yml"
170
+ if File.exist?(codelist_filename)
171
+ codelist = YAML.load(File.read(codelist_filename))[:codelist]
172
+ humanized = []
173
+ codelist.each do |k,v|
174
+ humanized << "#{v} (#{k})"
175
+ end
176
+ returns = YARD::DocstringParser.new.parse("@return [String] humanized name (from code): "+humanized.join(", ")).to_docstring.tags.first
177
+ object = YARD::CodeObjects::MethodObject.new(namespace, "human", :instance)
178
+ object.dynamic = true
179
+ object.add_tag(returns) if returns
180
+ object[:group] = 'Low level'
181
+ register(object)
182
+ end
183
+ end
184
+ end
data/im_onix.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "im_onix"
7
- spec.version = "1.1.1"
7
+ spec.version = "1.3.0"
8
8
  spec.authors = ["Julien Boulnois"]
9
9
  spec.email = ["jboulnois@immateriel.fr"]
10
10
 
@@ -25,6 +25,8 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "minitest"
26
26
  spec.add_development_dependency 'yard'
27
27
  spec.add_development_dependency 'shoulda'
28
+ spec.add_development_dependency "simplecov"
29
+ spec.add_development_dependency "ruby-prof"
28
30
 
29
31
  spec.required_ruby_version = '>= 2.1'
30
32
 
@@ -2,9 +2,11 @@ require 'onix/identifier'
2
2
 
3
3
  module ONIX
4
4
  class Addressee < SubsetDSL
5
- include GlnMethods
5
+ include IdentifiersMethods::Gln
6
6
 
7
- elements "AddresseeIdentifier", :subset, :shortcut => :identifiers
8
- element "AddresseeName", :text, :shortcut => :name
7
+ elements "AddresseeIdentifier", :subset, :shortcut => :identifiers, :cardinality => 0..n
8
+ element "AddresseeName", :text, :shortcut => :name, :cardinality => 0..1
9
+ element "ContactName", :text, :cardinality => 0..1
10
+ element "EmailAddress", :text, :cardinality => 0..1
9
11
  end
10
12
  end
@@ -0,0 +1,7 @@
1
+ module ONIX
2
+ class AncillaryContent < SubsetDSL
3
+ element "AncillaryContentType", :subset, :cardinality => 1
4
+ elements "AncillaryContentDescription", :text, :cardinality => 0..n
5
+ element "Number", :integer, :cardinality => 0..1
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module ONIX
2
+ class Audience < SubsetDSL
3
+ element "AudienceCodeType", :subset, :cardinality => 1
4
+ element "AudienceCodeTypeName", :text, :cardinality => 0..1
5
+ element "AudienceCodeValue", :text, :cardinality => 1
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ module ONIX
2
+ class AudienceRange < SubsetDSL
3
+ element "AudienceRangeQualifier", :subset, :cardinality => 1
4
+ element "AudienceRangePrecision", :subset, :cardinality => 1
5
+ element "AudienceRangeValue", :integer, :cardinality => 1
6
+
7
+ # element "AudienceRangePrecision", :subset, :cardinality => 0..1
8
+ # element "AudienceRangeValue", :integer, :cardinality => 0..1
9
+ end
10
+ end
@@ -0,0 +1,6 @@
1
+ module ONIX
2
+ class Barcode < SubsetDSL
3
+ element "BarcodeType", :subset, :cardinality => 1
4
+ element "PositionOnProduct", :subset, :cardinality => 0..1
5
+ end
6
+ end
@@ -0,0 +1,197 @@
1
+ require 'onix/serializer'
2
+
3
+ module ONIX
4
+ class BuilderInvalidArgument < StandardError
5
+ end
6
+
7
+ class BuilderInvalidCardinality < StandardError
8
+ end
9
+
10
+ class BuilderInvalidCode < StandardError
11
+ end
12
+
13
+ class BuilderInvalidChildElement < StandardError
14
+ end
15
+
16
+ class BuilderUndefinedElement < StandardError
17
+ end
18
+
19
+ class Builder
20
+ def initialize(options = {}, root = nil, &block)
21
+ if root
22
+ @doc = root
23
+ @parent = root
24
+ else
25
+ @parent = @doc = Root.new
26
+ end
27
+
28
+ @context = nil
29
+ @arity = nil
30
+
31
+ return unless block_given?
32
+
33
+ @arity = block.arity
34
+ if @arity <= 0
35
+ @context = eval("self", block.binding)
36
+ instance_eval(&block)
37
+ else
38
+ yield self
39
+ end
40
+
41
+ @lax = false
42
+
43
+ @parent = @doc
44
+ end
45
+
46
+ def serialize(xml)
47
+ ONIX::Serializer::Default.serialize(xml, @doc, "Root")
48
+ end
49
+
50
+ def dump(io = STDOUT)
51
+ ONIX::Serializer::Dump.serialize(io, @doc, "Root")
52
+ end
53
+
54
+ def to_xml
55
+ Nokogiri::XML::Builder.new(:encoding => "UTF-8") do |xml|
56
+ serialize(xml)
57
+ end.to_xml
58
+ end
59
+
60
+ # code in block will not check for validity
61
+ def lax &block
62
+ if block_given?
63
+ @lax = true
64
+ @arity ||= block.arity
65
+ if @arity <= 0
66
+ instance_eval(&block)
67
+ else
68
+ block.call(self)
69
+ end
70
+ @lax = false
71
+ end
72
+ end
73
+
74
+ def method_missing(method, *args, &block)
75
+ # :nodoc:
76
+ if @context && @context.respond_to?(method)
77
+ @context.send(method, *args, &block)
78
+ else
79
+ if @parent
80
+ parser_el = @parent.registered_elements[method.to_s]
81
+ if parser_el
82
+ if ONIX.const_defined?(parser_el.klass_name)
83
+ node = get_class(parser_el.klass_name, args)
84
+ end
85
+
86
+ if parser_el.is_array?
87
+ arr = @parent.send(parser_el.underscore_name)
88
+ case parser_el.type
89
+ when :ignore
90
+ when :subset
91
+ node.attributes = get_attributes(args[1]) if args.length > 1
92
+ arr << node
93
+ else
94
+ arr << get_primitive(args)
95
+ end
96
+ else
97
+ case parser_el.type
98
+ when :ignore
99
+ when :subset
100
+ # FIXME: dirty
101
+ if @parent.class.included_modules.include?(DateMethods) && node.is_a?(DateFormat)
102
+ @parent.deprecated_date_format = true
103
+ end
104
+ node.attributes = get_attributes(args[1]) if args.length > 1
105
+ @parent.send(parser_el.underscore_name + "=", node)
106
+ when :datestamp
107
+ @parent.send(parser_el.underscore_name + "=", DateStamp.new(args[0], args[1] || "%Y%m%d"))
108
+ else
109
+ @parent.send(parser_el.underscore_name + "=", get_primitive(args))
110
+ end
111
+ end
112
+ else
113
+ raise BuilderInvalidChildElement, [@parent.class.to_s.sub("ONIX::", ""), method.to_s]
114
+ end
115
+ else
116
+ node = get_class(method, args)
117
+ end
118
+
119
+ insert(node, &block)
120
+ end
121
+ end
122
+
123
+ private
124
+
125
+ def get_primitive(args)
126
+ if args.length > 1
127
+ txt = TextWithAttributes.new(args[0])
128
+ txt.attributes = get_attributes(args[1])
129
+ txt
130
+ else
131
+ args[0]
132
+ end
133
+ end
134
+
135
+ def get_attributes(arg)
136
+ attrs = {}
137
+ arg.each do |k, v|
138
+ attr_klass = ONIX::Attributes.attribute_class(k.to_s)
139
+ attrs[k] = get_element_code(attr_klass, v) if attr_klass
140
+ end
141
+ attrs
142
+ end
143
+
144
+ def get_element_code(klass, arg)
145
+ if arg.is_a?(String)
146
+ el = klass.from_code(arg)
147
+ unless el.human
148
+ unless @lax
149
+ raise BuilderInvalidCode, [klass.to_s, arg]
150
+ end
151
+ end
152
+ el
153
+ else
154
+ if arg.is_a?(Symbol)
155
+ klass.from_human(arg.to_s)
156
+ else
157
+ raise BuilderInvalidArgument, [klass.to_s, arg]
158
+ end
159
+ end
160
+ end
161
+
162
+ def get_element(klass, args)
163
+ if klass.respond_to?(:from_code)
164
+ get_element_code(klass, args[0])
165
+ else
166
+ el = klass.new
167
+ if el.is_a?(ONIX::ONIXMessage)
168
+ el.release = args[0]
169
+ end
170
+ el
171
+ end
172
+ end
173
+
174
+ def get_class(nm, args)
175
+ if ONIX.const_defined?(nm)
176
+ klass = ONIX.const_get(nm)
177
+ get_element(klass, args)
178
+ else
179
+ raise BuilderUndefinedElement, nm
180
+ end
181
+ end
182
+
183
+ def insert(node, &block)
184
+ if block_given?
185
+ old_parent = @parent
186
+ @parent = node
187
+ @arity ||= block.arity
188
+ if @arity <= 0
189
+ instance_eval(&block)
190
+ else
191
+ block.call(self)
192
+ end
193
+ @parent = old_parent
194
+ end
195
+ end
196
+ end
197
+ end
@@ -0,0 +1,15 @@
1
+ module ONIX
2
+ class CitedContent < SubsetDSL
3
+ element "CitedContentType", :subset, :cardinality => 1
4
+ elements "ContentAudience", :subset, :cardinality => 0..n
5
+ element "Territory", :subset, :cardinality => 0..1
6
+ element "SourceType", :subset, :cardinality => 0..1
7
+ element "ReviewRating", :subset, :cardinality => 0..1
8
+ elements "SourceTitle", :text, :cardinality => 0..n
9
+ elements "ListName", :text, :cardinality => 0..n
10
+ element "PositionOnList", :integer, :cardinality => 0..1
11
+ elements "CitationNote", :text, :cardinality => 0..n
12
+ elements "ResourceLink", :text, :cardinality => 0..n
13
+ elements "ContentDate", :subset, :cardinality => 0..n
14
+ end
15
+ end