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