im_onix 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +39 -0
- data/bin/html_codelist_to_yml.rb +46 -0
- data/bin/onix3_to_onix2.rb +192 -0
- data/bin/onix3_to_onix3.rb +401 -0
- data/bin/onix_bench.rb +15 -0
- data/bin/onix_pp.rb +216 -0
- data/bin/onix_split.rb +72 -0
- data/data/codelists/codelist-1.yml +12 -0
- data/data/codelists/codelist-10.yml +51 -0
- data/data/codelists/codelist-100.yml +8 -0
- data/data/codelists/codelist-101.yml +7 -0
- data/data/codelists/codelist-102.yml +5 -0
- data/data/codelists/codelist-11.yml +13 -0
- data/data/codelists/codelist-12.yml +15 -0
- data/data/codelists/codelist-121.yml +162 -0
- data/data/codelists/codelist-13.yml +10 -0
- data/data/codelists/codelist-138.yml +8 -0
- data/data/codelists/codelist-139.yml +102 -0
- data/data/codelists/codelist-14.yml +6 -0
- data/data/codelists/codelist-140.yml +9 -0
- data/data/codelists/codelist-141.yml +12 -0
- data/data/codelists/codelist-142.yml +14 -0
- data/data/codelists/codelist-143.yml +9 -0
- data/data/codelists/codelist-144.yml +10 -0
- data/data/codelists/codelist-145.yml +9 -0
- data/data/codelists/codelist-146.yml +5 -0
- data/data/codelists/codelist-147.yml +16 -0
- data/data/codelists/codelist-148.yml +6 -0
- data/data/codelists/codelist-149.yml +7 -0
- data/data/codelists/codelist-15.yml +15 -0
- data/data/codelists/codelist-150.yml +128 -0
- data/data/codelists/codelist-151.yml +10 -0
- data/data/codelists/codelist-152.yml +4 -0
- data/data/codelists/codelist-153.yml +19 -0
- data/data/codelists/codelist-154.yml +11 -0
- data/data/codelists/codelist-155.yml +10 -0
- data/data/codelists/codelist-156.yml +6 -0
- data/data/codelists/codelist-157.yml +6 -0
- data/data/codelists/codelist-158.yml +32 -0
- data/data/codelists/codelist-159.yml +8 -0
- data/data/codelists/codelist-16.yml +8 -0
- data/data/codelists/codelist-160.yml +6 -0
- data/data/codelists/codelist-161.yml +5 -0
- data/data/codelists/codelist-162.yml +9 -0
- data/data/codelists/codelist-163.yml +18 -0
- data/data/codelists/codelist-164.yml +7 -0
- data/data/codelists/codelist-165.yml +6 -0
- data/data/codelists/codelist-166.yml +6 -0
- data/data/codelists/codelist-167.yml +7 -0
- data/data/codelists/codelist-168.yml +4 -0
- data/data/codelists/codelist-169.yml +7 -0
- data/data/codelists/codelist-17.yml +95 -0
- data/data/codelists/codelist-170.yml +2 -0
- data/data/codelists/codelist-171.yml +4 -0
- data/data/codelists/codelist-172.yml +3 -0
- data/data/codelists/codelist-173.yml +5 -0
- data/data/codelists/codelist-174.yml +4 -0
- data/data/codelists/codelist-175.yml +217 -0
- data/data/codelists/codelist-176.yml +16 -0
- data/data/codelists/codelist-177.yml +4 -0
- data/data/codelists/codelist-178.yml +30 -0
- data/data/codelists/codelist-179.yml +4 -0
- data/data/codelists/codelist-18.yml +8 -0
- data/data/codelists/codelist-184.yml +10 -0
- data/data/codelists/codelist-19.yml +9 -0
- data/data/codelists/codelist-196.yml +22 -0
- data/data/codelists/codelist-197.yml +7 -0
- data/data/codelists/codelist-198.yml +4 -0
- data/data/codelists/codelist-2.yml +8 -0
- data/data/codelists/codelist-20.yml +2 -0
- data/data/codelists/codelist-203.yml +10 -0
- data/data/codelists/codelist-204.yml +6 -0
- data/data/codelists/codelist-21.yml +36 -0
- data/data/codelists/codelist-22.yml +11 -0
- data/data/codelists/codelist-23.yml +17 -0
- data/data/codelists/codelist-24.yml +13 -0
- data/data/codelists/codelist-25.yml +31 -0
- data/data/codelists/codelist-26.yml +94 -0
- data/data/codelists/codelist-27.yml +101 -0
- data/data/codelists/codelist-28.yml +10 -0
- data/data/codelists/codelist-29.yml +26 -0
- data/data/codelists/codelist-3.yml +13 -0
- data/data/codelists/codelist-30.yml +19 -0
- data/data/codelists/codelist-31.yml +5 -0
- data/data/codelists/codelist-32.yml +5 -0
- data/data/codelists/codelist-33.yml +44 -0
- data/data/codelists/codelist-34.yml +18 -0
- data/data/codelists/codelist-35.yml +8 -0
- data/data/codelists/codelist-36.yml +5 -0
- data/data/codelists/codelist-37.yml +8 -0
- data/data/codelists/codelist-38.yml +42 -0
- data/data/codelists/codelist-39.yml +21 -0
- data/data/codelists/codelist-40.yml +8 -0
- data/data/codelists/codelist-41.yml +8 -0
- data/data/codelists/codelist-42.yml +18 -0
- data/data/codelists/codelist-43.yml +8 -0
- data/data/codelists/codelist-44.yml +22 -0
- data/data/codelists/codelist-45.yml +15 -0
- data/data/codelists/codelist-46.yml +11 -0
- data/data/codelists/codelist-47.yml +6 -0
- data/data/codelists/codelist-48.yml +13 -0
- data/data/codelists/codelist-49.yml +87 -0
- data/data/codelists/codelist-5.yml +20 -0
- data/data/codelists/codelist-50.yml +10 -0
- data/data/codelists/codelist-51.yml +37 -0
- data/data/codelists/codelist-52.yml +3 -0
- data/data/codelists/codelist-53.yml +7 -0
- data/data/codelists/codelist-54.yml +25 -0
- data/data/codelists/codelist-55.yml +21 -0
- data/data/codelists/codelist-56.yml +4 -0
- data/data/codelists/codelist-57.yml +7 -0
- data/data/codelists/codelist-58.yml +27 -0
- data/data/codelists/codelist-59.yml +12 -0
- data/data/codelists/codelist-6.yml +78 -0
- data/data/codelists/codelist-60.yml +4 -0
- data/data/codelists/codelist-61.yml +5 -0
- data/data/codelists/codelist-62.yml +7 -0
- data/data/codelists/codelist-63.yml +2 -0
- data/data/codelists/codelist-64.yml +18 -0
- data/data/codelists/codelist-65.yml +31 -0
- data/data/codelists/codelist-66.yml +6 -0
- data/data/codelists/codelist-67.yml +4 -0
- data/data/codelists/codelist-68.yml +19 -0
- data/data/codelists/codelist-69.yml +6 -0
- data/data/codelists/codelist-7.yml +128 -0
- data/data/codelists/codelist-70.yml +4 -0
- data/data/codelists/codelist-71.yml +13 -0
- data/data/codelists/codelist-72.yml +9 -0
- data/data/codelists/codelist-73.yml +43 -0
- data/data/codelists/codelist-74.yml +491 -0
- data/data/codelists/codelist-75.yml +4 -0
- data/data/codelists/codelist-76.yml +14 -0
- data/data/codelists/codelist-77.yml +21 -0
- data/data/codelists/codelist-78.yml +179 -0
- data/data/codelists/codelist-79.yml +25 -0
- data/data/codelists/codelist-8.yml +9 -0
- data/data/codelists/codelist-80.yml +23 -0
- data/data/codelists/codelist-81.yml +41 -0
- data/data/codelists/codelist-82.yml +19 -0
- data/data/codelists/codelist-83.yml +71 -0
- data/data/codelists/codelist-84.yml +12 -0
- data/data/codelists/codelist-85.yml +25 -0
- data/data/codelists/codelist-86.yml +7 -0
- data/data/codelists/codelist-87.yml +8 -0
- data/data/codelists/codelist-88.yml +2 -0
- data/data/codelists/codelist-89.yml +3 -0
- data/data/codelists/codelist-9.yml +11 -0
- data/data/codelists/codelist-90.yml +13 -0
- data/data/codelists/codelist-91.yml +254 -0
- data/data/codelists/codelist-92.yml +11 -0
- data/data/codelists/codelist-93.yml +15 -0
- data/data/codelists/codelist-94.yml +5 -0
- data/data/codelists/codelist-95.yml +5 -0
- data/data/codelists/codelist-96.yml +193 -0
- data/data/codelists/codelist-97.yml +3 -0
- data/data/codelists/codelist-98.yml +23 -0
- data/data/codelists/codelist-99.yml +26 -0
- data/data/onix21/codelists/codelist-1.yml +14 -0
- data/data/onix21/codelists/codelist-10.yml +52 -0
- data/data/onix21/codelists/codelist-100.yml +8 -0
- data/data/onix21/codelists/codelist-101.yml +7 -0
- data/data/onix21/codelists/codelist-102.yml +5 -0
- data/data/onix21/codelists/codelist-11.yml +13 -0
- data/data/onix21/codelists/codelist-12.yml +16 -0
- data/data/onix21/codelists/codelist-121.yml +162 -0
- data/data/onix21/codelists/codelist-13.yml +11 -0
- data/data/onix21/codelists/codelist-138.yml +8 -0
- data/data/onix21/codelists/codelist-139.yml +109 -0
- data/data/onix21/codelists/codelist-14.yml +6 -0
- data/data/onix21/codelists/codelist-140.yml +9 -0
- data/data/onix21/codelists/codelist-141.yml +12 -0
- data/data/onix21/codelists/codelist-142.yml +14 -0
- data/data/onix21/codelists/codelist-143.yml +9 -0
- data/data/onix21/codelists/codelist-144.yml +8 -0
- data/data/onix21/codelists/codelist-145.yml +10 -0
- data/data/onix21/codelists/codelist-146.yml +5 -0
- data/data/onix21/codelists/codelist-147.yml +16 -0
- data/data/onix21/codelists/codelist-148.yml +6 -0
- data/data/onix21/codelists/codelist-149.yml +8 -0
- data/data/onix21/codelists/codelist-15.yml +16 -0
- data/data/onix21/codelists/codelist-150.yml +133 -0
- data/data/onix21/codelists/codelist-151.yml +10 -0
- data/data/onix21/codelists/codelist-152.yml +4 -0
- data/data/onix21/codelists/codelist-153.yml +22 -0
- data/data/onix21/codelists/codelist-154.yml +11 -0
- data/data/onix21/codelists/codelist-155.yml +10 -0
- data/data/onix21/codelists/codelist-156.yml +6 -0
- data/data/onix21/codelists/codelist-157.yml +6 -0
- data/data/onix21/codelists/codelist-158.yml +35 -0
- data/data/onix21/codelists/codelist-159.yml +8 -0
- data/data/onix21/codelists/codelist-16.yml +8 -0
- data/data/onix21/codelists/codelist-160.yml +7 -0
- data/data/onix21/codelists/codelist-161.yml +5 -0
- data/data/onix21/codelists/codelist-162.yml +9 -0
- data/data/onix21/codelists/codelist-163.yml +18 -0
- data/data/onix21/codelists/codelist-164.yml +7 -0
- data/data/onix21/codelists/codelist-165.yml +6 -0
- data/data/onix21/codelists/codelist-166.yml +6 -0
- data/data/onix21/codelists/codelist-167.yml +11 -0
- data/data/onix21/codelists/codelist-168.yml +4 -0
- data/data/onix21/codelists/codelist-169.yml +7 -0
- data/data/onix21/codelists/codelist-17.yml +98 -0
- data/data/onix21/codelists/codelist-170.yml +6 -0
- data/data/onix21/codelists/codelist-171.yml +4 -0
- data/data/onix21/codelists/codelist-172.yml +3 -0
- data/data/onix21/codelists/codelist-173.yml +5 -0
- data/data/onix21/codelists/codelist-174.yml +4 -0
- data/data/onix21/codelists/codelist-175.yml +230 -0
- data/data/onix21/codelists/codelist-176.yml +16 -0
- data/data/onix21/codelists/codelist-177.yml +4 -0
- data/data/onix21/codelists/codelist-178.yml +30 -0
- data/data/onix21/codelists/codelist-179.yml +5 -0
- data/data/onix21/codelists/codelist-18.yml +8 -0
- data/data/onix21/codelists/codelist-184.yml +10 -0
- data/data/onix21/codelists/codelist-19.yml +9 -0
- data/data/onix21/codelists/codelist-196.yml +22 -0
- data/data/onix21/codelists/codelist-197.yml +7 -0
- data/data/onix21/codelists/codelist-198.yml +8 -0
- data/data/onix21/codelists/codelist-2.yml +8 -0
- data/data/onix21/codelists/codelist-20.yml +2 -0
- data/data/onix21/codelists/codelist-203.yml +10 -0
- data/data/onix21/codelists/codelist-204.yml +7 -0
- data/data/onix21/codelists/codelist-21.yml +36 -0
- data/data/onix21/codelists/codelist-215.yml +9 -0
- data/data/onix21/codelists/codelist-216.yml +11 -0
- data/data/onix21/codelists/codelist-217.yml +3 -0
- data/data/onix21/codelists/codelist-218.yml +5 -0
- data/data/onix21/codelists/codelist-219.yml +5 -0
- data/data/onix21/codelists/codelist-22.yml +11 -0
- data/data/onix21/codelists/codelist-220.yml +7 -0
- data/data/onix21/codelists/codelist-23.yml +17 -0
- data/data/onix21/codelists/codelist-24.yml +14 -0
- data/data/onix21/codelists/codelist-25.yml +31 -0
- data/data/onix21/codelists/codelist-26.yml +100 -0
- data/data/onix21/codelists/codelist-27.yml +107 -0
- data/data/onix21/codelists/codelist-28.yml +10 -0
- data/data/onix21/codelists/codelist-29.yml +30 -0
- data/data/onix21/codelists/codelist-3.yml +13 -0
- data/data/onix21/codelists/codelist-30.yml +20 -0
- data/data/onix21/codelists/codelist-31.yml +5 -0
- data/data/onix21/codelists/codelist-32.yml +10 -0
- data/data/onix21/codelists/codelist-33.yml +46 -0
- data/data/onix21/codelists/codelist-34.yml +18 -0
- data/data/onix21/codelists/codelist-35.yml +8 -0
- data/data/onix21/codelists/codelist-36.yml +5 -0
- data/data/onix21/codelists/codelist-37.yml +8 -0
- data/data/onix21/codelists/codelist-38.yml +42 -0
- data/data/onix21/codelists/codelist-39.yml +21 -0
- data/data/onix21/codelists/codelist-40.yml +8 -0
- data/data/onix21/codelists/codelist-41.yml +9 -0
- data/data/onix21/codelists/codelist-42.yml +18 -0
- data/data/onix21/codelists/codelist-43.yml +9 -0
- data/data/onix21/codelists/codelist-44.yml +27 -0
- data/data/onix21/codelists/codelist-45.yml +20 -0
- data/data/onix21/codelists/codelist-46.yml +11 -0
- data/data/onix21/codelists/codelist-47.yml +6 -0
- data/data/onix21/codelists/codelist-48.yml +13 -0
- data/data/onix21/codelists/codelist-49.yml +281 -0
- data/data/onix21/codelists/codelist-5.yml +20 -0
- data/data/onix21/codelists/codelist-50.yml +10 -0
- data/data/onix21/codelists/codelist-51.yml +37 -0
- data/data/onix21/codelists/codelist-52.yml +3 -0
- data/data/onix21/codelists/codelist-53.yml +7 -0
- data/data/onix21/codelists/codelist-54.yml +25 -0
- data/data/onix21/codelists/codelist-55.yml +21 -0
- data/data/onix21/codelists/codelist-56.yml +4 -0
- data/data/onix21/codelists/codelist-57.yml +7 -0
- data/data/onix21/codelists/codelist-58.yml +27 -0
- data/data/onix21/codelists/codelist-59.yml +12 -0
- data/data/onix21/codelists/codelist-6.yml +78 -0
- data/data/onix21/codelists/codelist-60.yml +4 -0
- data/data/onix21/codelists/codelist-61.yml +5 -0
- data/data/onix21/codelists/codelist-62.yml +7 -0
- data/data/onix21/codelists/codelist-63.yml +2 -0
- data/data/onix21/codelists/codelist-64.yml +18 -0
- data/data/onix21/codelists/codelist-65.yml +31 -0
- data/data/onix21/codelists/codelist-66.yml +6 -0
- data/data/onix21/codelists/codelist-67.yml +4 -0
- data/data/onix21/codelists/codelist-68.yml +19 -0
- data/data/onix21/codelists/codelist-69.yml +6 -0
- data/data/onix21/codelists/codelist-7.yml +132 -0
- data/data/onix21/codelists/codelist-70.yml +4 -0
- data/data/onix21/codelists/codelist-71.yml +14 -0
- data/data/onix21/codelists/codelist-72.yml +9 -0
- data/data/onix21/codelists/codelist-73.yml +43 -0
- data/data/onix21/codelists/codelist-74.yml +492 -0
- data/data/onix21/codelists/codelist-75.yml +4 -0
- data/data/onix21/codelists/codelist-76.yml +14 -0
- data/data/onix21/codelists/codelist-77.yml +21 -0
- data/data/onix21/codelists/codelist-78.yml +191 -0
- data/data/onix21/codelists/codelist-79.yml +26 -0
- data/data/onix21/codelists/codelist-8.yml +9 -0
- data/data/onix21/codelists/codelist-80.yml +23 -0
- data/data/onix21/codelists/codelist-81.yml +41 -0
- data/data/onix21/codelists/codelist-82.yml +19 -0
- data/data/onix21/codelists/codelist-83.yml +72 -0
- data/data/onix21/codelists/codelist-84.yml +12 -0
- data/data/onix21/codelists/codelist-85.yml +25 -0
- data/data/onix21/codelists/codelist-86.yml +7 -0
- data/data/onix21/codelists/codelist-87.yml +8 -0
- data/data/onix21/codelists/codelist-88.yml +2 -0
- data/data/onix21/codelists/codelist-89.yml +3 -0
- data/data/onix21/codelists/codelist-9.yml +13 -0
- data/data/onix21/codelists/codelist-90.yml +13 -0
- data/data/onix21/codelists/codelist-91.yml +254 -0
- data/data/onix21/codelists/codelist-92.yml +11 -0
- data/data/onix21/codelists/codelist-93.yml +15 -0
- data/data/onix21/codelists/codelist-94.yml +5 -0
- data/data/onix21/codelists/codelist-95.yml +5 -0
- data/data/onix21/codelists/codelist-96.yml +194 -0
- data/data/onix21/codelists/codelist-97.yml +3 -0
- data/data/onix21/codelists/codelist-98.yml +25 -0
- data/data/onix21/codelists/codelist-99.yml +26 -0
- data/data/onix21/shortnames.yml +431 -0
- data/data/shortnames.yml +395 -0
- data/lib/im_onix.rb +2 -0
- data/lib/onix/code.rb +543 -0
- data/lib/onix/collateral_detail.rb +94 -0
- data/lib/onix/contributor.rb +87 -0
- data/lib/onix/date.rb +183 -0
- data/lib/onix/descriptive_detail.rb +552 -0
- data/lib/onix/discount_coded.rb +20 -0
- data/lib/onix/entity.rb +135 -0
- data/lib/onix/error.rb +6 -0
- data/lib/onix/helper.rb +66 -0
- data/lib/onix/identifier.rb +158 -0
- data/lib/onix/onix21.rb +604 -0
- data/lib/onix/onix_message.rb +187 -0
- data/lib/onix/price.rb +74 -0
- data/lib/onix/product.rb +846 -0
- data/lib/onix/product_supply.rb +89 -0
- data/lib/onix/publishing_detail.rb +86 -0
- data/lib/onix/related_material.rb +30 -0
- data/lib/onix/related_product.rb +45 -0
- data/lib/onix/related_work.rb +24 -0
- data/lib/onix/sales_outlet.rb +14 -0
- data/lib/onix/sales_restriction.rb +37 -0
- data/lib/onix/sales_rights.rb +12 -0
- data/lib/onix/subject.rb +35 -0
- data/lib/onix/subset.rb +334 -0
- data/lib/onix/supporting_resource.rb +192 -0
- data/lib/onix/tax.rb +23 -0
- data/lib/onix/territory.rb +56 -0
- data/lib/onix/website.rb +21 -0
- metadata +477 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
module ONIX
|
2
|
+
class DiscountCoded < SubsetDSL
|
3
|
+
element "DiscountCodeType", :text
|
4
|
+
element "DiscountCodeTypeName", :text
|
5
|
+
element "DiscountCode", :text
|
6
|
+
|
7
|
+
# shortcuts
|
8
|
+
def code_type
|
9
|
+
@discount_code_type
|
10
|
+
end
|
11
|
+
|
12
|
+
def code_type_name
|
13
|
+
@discount_code_type_name
|
14
|
+
end
|
15
|
+
|
16
|
+
def code
|
17
|
+
@discount_code
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/onix/entity.rb
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
require 'onix/code'
|
2
|
+
require 'onix/identifier'
|
3
|
+
require 'onix/website'
|
4
|
+
|
5
|
+
module ONIX
|
6
|
+
module EntityHelper
|
7
|
+
end
|
8
|
+
class Entity < SubsetDSL
|
9
|
+
# entity name
|
10
|
+
attr_accessor :name
|
11
|
+
# entity role
|
12
|
+
attr_accessor :role
|
13
|
+
# entity Identifier list
|
14
|
+
attr_accessor :identifiers
|
15
|
+
|
16
|
+
include GlnMethods
|
17
|
+
include EntityHelper
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
super
|
21
|
+
@identifiers = []
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.role_tag
|
25
|
+
"#{self.prefix}Role"
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.name_tag
|
29
|
+
"#{self.prefix}Name"
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.identifier_tag
|
33
|
+
"#{self.prefix}Identifier"
|
34
|
+
end
|
35
|
+
|
36
|
+
def parse(n)
|
37
|
+
super
|
38
|
+
n.children.each do |t|
|
39
|
+
case t
|
40
|
+
when tag_match(self.class.name_tag)
|
41
|
+
@name=t.text
|
42
|
+
when tag_match(self.class.role_tag)
|
43
|
+
if self.class.role_class
|
44
|
+
@role=self.class.role_class.parse(t)
|
45
|
+
end
|
46
|
+
when tag_match(self.class.identifier_tag)
|
47
|
+
if self.class.identifier_class
|
48
|
+
@identifiers << self.class.identifier_class.parse(t)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.prefix
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.identifier_class
|
58
|
+
nil
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.role_class
|
62
|
+
nil
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
class Agent < Entity
|
67
|
+
def self.prefix
|
68
|
+
"Agent"
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.identifier_class
|
72
|
+
AgentIdentifier
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.role_class
|
76
|
+
AgentRole
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
class Imprint < Entity
|
81
|
+
def self.prefix
|
82
|
+
"Imprint"
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.identifier_class
|
86
|
+
ImprintIdentifier
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.role_class
|
90
|
+
nil
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
class Supplier < Entity
|
95
|
+
elements "Website", :subset
|
96
|
+
|
97
|
+
def self.prefix
|
98
|
+
"Supplier"
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.identifier_class
|
102
|
+
SupplierIdentifier
|
103
|
+
end
|
104
|
+
|
105
|
+
def self.role_class
|
106
|
+
SupplierRole
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
class Publisher < Entity
|
111
|
+
elements "Website", :subset
|
112
|
+
|
113
|
+
def initialize
|
114
|
+
super
|
115
|
+
@websites = []
|
116
|
+
end
|
117
|
+
|
118
|
+
def self.prefix
|
119
|
+
"Publisher"
|
120
|
+
end
|
121
|
+
|
122
|
+
def self.role_tag
|
123
|
+
"PublishingRole"
|
124
|
+
end
|
125
|
+
|
126
|
+
def self.identifier_class
|
127
|
+
PublisherIdentifier
|
128
|
+
end
|
129
|
+
|
130
|
+
def self.role_class
|
131
|
+
PublishingRole
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
data/lib/onix/error.rb
ADDED
data/lib/onix/helper.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
module ONIX
|
2
|
+
class Helper
|
3
|
+
# convert arbitrary arg to File/String
|
4
|
+
def self.arg_to_data(arg)
|
5
|
+
data=""
|
6
|
+
case arg
|
7
|
+
when String
|
8
|
+
if File.file?(arg)
|
9
|
+
data=File.read(arg)
|
10
|
+
else
|
11
|
+
data=arg
|
12
|
+
end
|
13
|
+
when File, Tempfile
|
14
|
+
data=arg.read
|
15
|
+
end
|
16
|
+
data
|
17
|
+
end
|
18
|
+
|
19
|
+
# traverse each product as xml string
|
20
|
+
def self.each_xml_product(arg, &block)
|
21
|
+
data=self.arg_to_data(arg)
|
22
|
+
Nokogiri::XML::Reader(data).each do |node|
|
23
|
+
if node.name == 'Product' and node.node_type == Nokogiri::XML::Reader::TYPE_ELEMENT
|
24
|
+
yield(node.outer_xml)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# traverse each product as xml string with added ONIXMessage
|
30
|
+
def self.each_xml_product_as_full_message(arg, &block)
|
31
|
+
self.each_xml_product(arg) do |p|
|
32
|
+
yield("<ONIXMessage>\n"+p+"\n</ONIXMessage>\n")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.text_at(n,xpath)
|
37
|
+
if n.at_xpath(xpath)
|
38
|
+
n.at_xpath(xpath).text.strip
|
39
|
+
else
|
40
|
+
nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.mandatory_text_at(n,xpath)
|
45
|
+
self.text_at(n,xpath)
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.strip_html(html)
|
49
|
+
html.gsub(/ /," ").gsub(/<[^>]*(>+|\s*\z)/m, '')
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.to_date(date_format,date_str_f)
|
53
|
+
case date_format
|
54
|
+
when "00"
|
55
|
+
Date.strptime(date_str_f, "%Y%m%d")
|
56
|
+
when "01"
|
57
|
+
Date.strptime(date_str_f, "%Y%m")
|
58
|
+
when "14"
|
59
|
+
Time.strptime(date_str_f, "%Y%m%dT%H%M%S")
|
60
|
+
else
|
61
|
+
nil
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
module ONIX
|
2
|
+
class Identifier < SubsetDSL
|
3
|
+
element "IDValue", :text
|
4
|
+
element "IDTypeName", :text
|
5
|
+
|
6
|
+
def value
|
7
|
+
@id_value
|
8
|
+
end
|
9
|
+
|
10
|
+
def name
|
11
|
+
@id_type_name
|
12
|
+
end
|
13
|
+
|
14
|
+
def type
|
15
|
+
nil
|
16
|
+
end
|
17
|
+
|
18
|
+
def uniq_id
|
19
|
+
"#{type.code}-#{value}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class SenderIdentifier < Identifier
|
24
|
+
element "SenderIDType", :subset
|
25
|
+
def type
|
26
|
+
@sender_id_type
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class AddresseeIdentifier < Identifier
|
31
|
+
element "AddresseeIDType", :subset
|
32
|
+
def type
|
33
|
+
@addressee_id_type
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class AgentIdentifier < Identifier
|
38
|
+
element "AgentIDType", :subset
|
39
|
+
def type
|
40
|
+
@agent_id_type
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class ImprintIdentifier < Identifier
|
45
|
+
element "ImprintIDType", :subset
|
46
|
+
def type
|
47
|
+
@imprint_id_type
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class PublisherIdentifier < Identifier
|
52
|
+
element "PublisherIDType", :subset
|
53
|
+
def type
|
54
|
+
@publisher_id_type
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class SupplierIdentifier < Identifier
|
59
|
+
element "SupplierIDType", :subset
|
60
|
+
def type
|
61
|
+
@supplier_id_type
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
class NameIdentifier < Identifier
|
66
|
+
element "NameIDType", :subset
|
67
|
+
def type
|
68
|
+
@name_id_type
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class CollectionIdentifier < Identifier
|
73
|
+
element "CollectionIDType", :subset
|
74
|
+
def type
|
75
|
+
@collection_id_type
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
class ProductIdentifier < Identifier
|
80
|
+
element "ProductIDType", :subset
|
81
|
+
def type
|
82
|
+
@product_id_type
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
class SalesOutletIdentifier < Identifier
|
87
|
+
element "SalesOutletIDType", :subset
|
88
|
+
def type
|
89
|
+
@sales_outlet_id_type
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
class WorkIdentifier < Identifier
|
94
|
+
element "WorkIDType", :subset
|
95
|
+
def type
|
96
|
+
@work_id_type
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
module EanMethods
|
101
|
+
# EAN string identifier from identifiers
|
102
|
+
def ean
|
103
|
+
if ean_identifier
|
104
|
+
ean_identifier.value
|
105
|
+
else
|
106
|
+
nil
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
private
|
111
|
+
def ean_identifier
|
112
|
+
self.identifiers.select { |id| id.type.human=="Gtin13" }.first || self.identifiers.select { |id| id.type.human=="Isbn13" }.first
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
module IsbnMethods
|
117
|
+
# ISBN-13 string identifier from identifiers
|
118
|
+
def isbn13
|
119
|
+
if isbn13_identifier
|
120
|
+
isbn13_identifier.value
|
121
|
+
else
|
122
|
+
nil
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
private
|
127
|
+
def isbn13_identifier
|
128
|
+
self.identifiers.select{|id| id.type.human=="Isbn13"}.first
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
module GlnMethods
|
133
|
+
# GLN string identifier from identifiers
|
134
|
+
def gln
|
135
|
+
if gln_identifier
|
136
|
+
if gln_identifier.value =~ /\d{13}/
|
137
|
+
gln_identifier.value
|
138
|
+
else
|
139
|
+
puts "Invalid GLN #{gln_identifier.value}"
|
140
|
+
nil
|
141
|
+
end
|
142
|
+
else
|
143
|
+
nil
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
# private
|
148
|
+
def gln_identifier
|
149
|
+
self.identifiers.select { |id| id.type.human=="Gln" }.first
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
module ProprietaryIdMethods
|
154
|
+
def proprietary_ids
|
155
|
+
self.identifiers.select { |id| id.type.human=="Proprietary" }
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|