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