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
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7eec0e1b2732af7b05abadeadeafe1c4e9acf53166b2256cbe39476461e5f99a
|
4
|
+
data.tar.gz: 166d34732659a91b6494d8dd1507100d861bebd7a8c258263e2d02204befdffc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e42f395bf965520563bf4697abde739bbcbfda111f8ec8c1b3a9bc5f9612bba6773a5c245c15fa442fcda75fc4a0283328dab228f387f9222be8892432527590
|
7
|
+
data.tar.gz: 7f941cad2dfdc9946d9c4a773d543003131178394e636fe5d4de12c408ef31f6f22dc52d802840e70d0dcd57bac73f9bc3c2aa0a83fdc6a1c2dd7bfedc6b7fcd
|
data/README.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
## Pragmatic ONIX 3.0 parser for Ruby
|
2
|
+
|
3
|
+
### Low level API
|
4
|
+
Whole structure is accessible through ONIX::ONIXMessage object :
|
5
|
+
```ruby
|
6
|
+
message=ONIX::ONIXMessage.new
|
7
|
+
message.parse("onix_file.xml")
|
8
|
+
# first product
|
9
|
+
pp message.products.first
|
10
|
+
# first identifier of first product
|
11
|
+
pp message.products.first.identifiers.first
|
12
|
+
```
|
13
|
+
|
14
|
+
Ruby elements variables are underscored, lowercase of ONIX tags (Product -> product, DescriptiveDetail -> descriptive_detail) and pluralized in case of array (ProductSupply -> product_supplies).
|
15
|
+
|
16
|
+
### High level API
|
17
|
+
High level methods give abstracted and simplified access to the most important data.
|
18
|
+
See http://nu.immateriel.fr/im_onix/doc/ONIX/Product.html for high level API rdoc and onix_pp.rb, onix3_to_onix2.rb and onix3_to_onix3.rb sample in bin/
|
19
|
+
|
20
|
+
Usage :
|
21
|
+
```shell
|
22
|
+
onix_pp.rb onix.xml
|
23
|
+
onix3_to_onix2.rb onix.xml
|
24
|
+
onix3_to_onix3.rb onix.xml
|
25
|
+
```
|
26
|
+
### Development
|
27
|
+
|
28
|
+
#### Running the tests
|
29
|
+
|
30
|
+
Launch this command:
|
31
|
+
|
32
|
+
```
|
33
|
+
ruby -Ilib:test test/test_im_onix.rb
|
34
|
+
```
|
35
|
+
|
36
|
+
### Contributors
|
37
|
+
TEA "The Ebook Alternative" : http://www.tea-ebook.com/
|
38
|
+
|
39
|
+
Bookmate : https://bookmate.com/
|
@@ -0,0 +1,46 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- encoding : utf-8 -*-
|
3
|
+
|
4
|
+
require 'im_onix'
|
5
|
+
require 'nokogiri'
|
6
|
+
require 'yaml'
|
7
|
+
|
8
|
+
# html_codelist_to_yml.rb html_codelist_dir
|
9
|
+
|
10
|
+
class HTMLCodelist
|
11
|
+
|
12
|
+
private
|
13
|
+
def self.parse_codelist(codelist)
|
14
|
+
h={}
|
15
|
+
# puts "PARSE CODELIST #{codelist}"
|
16
|
+
html=Nokogiri::HTML.parse(File.open(codelist))
|
17
|
+
html.search("//tr").each do |tr|
|
18
|
+
# pp tr
|
19
|
+
td_code=tr.at("./td[1]")
|
20
|
+
td_human=tr.at("./td[2]")
|
21
|
+
if td_code and td_human
|
22
|
+
h[td_code.text.strip]=self.rename(td_human.text.strip)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
h
|
26
|
+
end
|
27
|
+
|
28
|
+
# from rails
|
29
|
+
def self.rename(term)
|
30
|
+
term.gsub(/\(|\)|\,|\-|’|\/|“|”|‘|\.|\:|–|\||\+/,"").gsub(/\;/," Or ").gsub(/\s+/," ").split(" ").map{|t| t.capitalize}.join("")
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
files=`ls #{ARGV[1]}/*.htm`.split(/\n/)
|
36
|
+
|
37
|
+
h={}
|
38
|
+
|
39
|
+
files.sort.each do |file|
|
40
|
+
codelist=file.gsub(/.*onix\-codelist\-(.*)\.htm/,'\1').to_i
|
41
|
+
h=HTMLCodelist.parse_codelist(file)
|
42
|
+
|
43
|
+
File.open("data/codelists/codelist-#{codelist}.yml",'w') do |fw| fw.write({:codelist=>h}.to_yaml) end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
@@ -0,0 +1,192 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'im_onix'
|
3
|
+
require 'nokogiri'
|
4
|
+
|
5
|
+
filename=ARGV[0]
|
6
|
+
|
7
|
+
if filename
|
8
|
+
msg=ONIX::ONIXMessage.new
|
9
|
+
msg.parse(filename)
|
10
|
+
|
11
|
+
builder = Nokogiri::XML::Builder.new(:encoding => "UTF-8") do |xml|
|
12
|
+
xml.doc.create_internal_subset(
|
13
|
+
'ONIXMessage',
|
14
|
+
nil,
|
15
|
+
"http://www.editeur.org/onix/2.1/reference/onix-international.dtd"
|
16
|
+
)
|
17
|
+
xml.ONIXMessage {
|
18
|
+
xml.Header {
|
19
|
+
if msg.sender and msg.sender.name
|
20
|
+
xml.FromCompany(msg.sender.name)
|
21
|
+
else
|
22
|
+
xml.FromCompany("Any")
|
23
|
+
end
|
24
|
+
xml.ToCompany("Any")
|
25
|
+
}
|
26
|
+
|
27
|
+
msg.products.each do |product|
|
28
|
+
xml.Product {
|
29
|
+
xml.RecordReference(product.ean)
|
30
|
+
xml.NotificationType("03")
|
31
|
+
|
32
|
+
xml.ProductIdentifier {
|
33
|
+
xml.ProductIDType("03")
|
34
|
+
xml.IDValue(product.ean)
|
35
|
+
|
36
|
+
}
|
37
|
+
|
38
|
+
xml.ProductForm("DG")
|
39
|
+
|
40
|
+
case product.file_format
|
41
|
+
when "Pdf"
|
42
|
+
xml.EpubType("002")
|
43
|
+
when "Epub"
|
44
|
+
xml.EpubType("029")
|
45
|
+
else
|
46
|
+
xml.EpubType("000")
|
47
|
+
end
|
48
|
+
|
49
|
+
# if @book.book_collection
|
50
|
+
# xml.Series {
|
51
|
+
# xml.TitleOfSeries(@book.book_collection.title)
|
52
|
+
# }
|
53
|
+
# end
|
54
|
+
|
55
|
+
xml.Title {
|
56
|
+
xml.TitleType("01")
|
57
|
+
xml.TitleText(product.title)
|
58
|
+
if product.subtitle
|
59
|
+
xml.Subtitle(product.subtitle)
|
60
|
+
end
|
61
|
+
}
|
62
|
+
|
63
|
+
i=1
|
64
|
+
product.contributors.each do |a|
|
65
|
+
xml.Contributor {
|
66
|
+
xml.SequenceNumber(i)
|
67
|
+
xml.ContributorRole(a.role.code)
|
68
|
+
xml.PersonName(a.name)
|
69
|
+
if a.biography
|
70
|
+
xml.BiographicalNote(a.biography)
|
71
|
+
end
|
72
|
+
}
|
73
|
+
i=i+1
|
74
|
+
end
|
75
|
+
|
76
|
+
# xml.EditionNumber(@book.edition)
|
77
|
+
|
78
|
+
if product.language_of_text
|
79
|
+
xml.Language {
|
80
|
+
xml.LanguageRole("01")
|
81
|
+
xml.LanguageCode(product.language_of_text)
|
82
|
+
}
|
83
|
+
end
|
84
|
+
|
85
|
+
if product.pages
|
86
|
+
xml.NumberOfPages(product.pages)
|
87
|
+
end
|
88
|
+
|
89
|
+
product.bisac_categories.each do |ct|
|
90
|
+
xml.BASICMainSubject(ct.code)
|
91
|
+
end
|
92
|
+
|
93
|
+
xml.OtherText {
|
94
|
+
xml.TextTypeCode("01")
|
95
|
+
xml.Text(product.description)
|
96
|
+
}
|
97
|
+
|
98
|
+
if product.imprint_name
|
99
|
+
xml.Imprint {
|
100
|
+
xml.ImprintName(product.imprint_name)
|
101
|
+
}
|
102
|
+
end
|
103
|
+
|
104
|
+
xml.Publisher {
|
105
|
+
xml.PublishingRole("01")
|
106
|
+
xml.PublisherName(product.publisher_name)
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
if product.available?
|
111
|
+
xml.PublishingStatus("04")
|
112
|
+
else
|
113
|
+
xml.PublishingStatus("08")
|
114
|
+
end
|
115
|
+
|
116
|
+
xml.PublicationDate(product.publication_date.strftime("%Y%m%d"))
|
117
|
+
|
118
|
+
xml.SalesRights {
|
119
|
+
xml.SalesRightsType("01")
|
120
|
+
xml.RightsCountry(product.countries_rights.join(" "))
|
121
|
+
}
|
122
|
+
|
123
|
+
if product.print_product
|
124
|
+
xml.RelatedProduct {
|
125
|
+
xml.RelationCode("13")
|
126
|
+
|
127
|
+
xml.ProductIdentifier {
|
128
|
+
xml.ProductIDType("03")
|
129
|
+
xml.IDValue(product.print_product.ean)
|
130
|
+
}
|
131
|
+
}
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
product.supplies.each do |supply|
|
136
|
+
xml.SupplyDetail {
|
137
|
+
if product.distributor_name
|
138
|
+
xml.SupplierName(product.distributor_name)
|
139
|
+
else
|
140
|
+
xml.SupplierName("Unknown")
|
141
|
+
end
|
142
|
+
|
143
|
+
|
144
|
+
if supply[:available]
|
145
|
+
xml.ProductAvailability("20")
|
146
|
+
else
|
147
|
+
xml.ProductAvailability("40")
|
148
|
+
end
|
149
|
+
|
150
|
+
if supply[:availability_date]
|
151
|
+
xml.OnSaleDate(supply[:availability_date].strftime("%Y%m%d"))
|
152
|
+
else
|
153
|
+
xml.OnSaleDate(product.publication_date.strftime("%Y%m%d"))
|
154
|
+
end
|
155
|
+
|
156
|
+
supply[:prices].each do |price|
|
157
|
+
xml.Price {
|
158
|
+
if supply[:including_tax]
|
159
|
+
xml.PriceTypeCode("04")
|
160
|
+
else
|
161
|
+
xml.PriceTypeCode("03")
|
162
|
+
end
|
163
|
+
xml.PriceAmount(price[:amount]/100.0)
|
164
|
+
xml.CurrencyCode(supply[:currency])
|
165
|
+
supply[:territory].each do |t|
|
166
|
+
xml.CountryCode(t)
|
167
|
+
end
|
168
|
+
|
169
|
+
if price[:from_date] then
|
170
|
+
xml.PriceEffectiveFrom(price[:from_date].strftime("%Y%m%d"))
|
171
|
+
end
|
172
|
+
if price[:until_date]
|
173
|
+
xml.PriceEffectiveUntil(price[:until_date].strftime("%Y%m%d"))
|
174
|
+
end
|
175
|
+
|
176
|
+
}
|
177
|
+
end
|
178
|
+
|
179
|
+
}
|
180
|
+
end
|
181
|
+
|
182
|
+
}
|
183
|
+
end
|
184
|
+
}
|
185
|
+
|
186
|
+
end
|
187
|
+
|
188
|
+
puts builder.to_xml
|
189
|
+
else
|
190
|
+
puts "ONIX 3.0 to ONIX 2.1 converter"
|
191
|
+
puts "Usage: onix3_to_onix2.rb onix.xml"
|
192
|
+
end
|
@@ -0,0 +1,401 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'im_onix'
|
3
|
+
require 'nokogiri'
|
4
|
+
|
5
|
+
filename=ARGV[0]
|
6
|
+
|
7
|
+
if filename
|
8
|
+
msg=ONIX::ONIXMessage.new
|
9
|
+
msg.parse(filename)
|
10
|
+
|
11
|
+
builder = Nokogiri::XML::Builder.new(:encoding => "UTF-8") do |xml|
|
12
|
+
xml.ONIXMessage(:release=>"3.0", :xmlns=>"http://ns.editeur.org/onix/3.0/reference") {
|
13
|
+
xml.Header {
|
14
|
+
if msg.sender
|
15
|
+
xml.Sender {
|
16
|
+
if msg.sender.gln
|
17
|
+
xml.SenderIdentifier {
|
18
|
+
xml.SenderIDType("06")
|
19
|
+
xml.IDValue(msg.sender.gln)
|
20
|
+
}
|
21
|
+
end
|
22
|
+
xml.SenderName(msg.sender.name)
|
23
|
+
}
|
24
|
+
end
|
25
|
+
if msg.sent_date_time
|
26
|
+
xml.SentDateTime(msg.sent_date_time.strftime("%Y%m%dT%H%M"))
|
27
|
+
end
|
28
|
+
}
|
29
|
+
msg.products.each do |product|
|
30
|
+
xml.Product {
|
31
|
+
xml.RecordReference(product.ean)
|
32
|
+
if product.delete?
|
33
|
+
xml.NotificationType("05")
|
34
|
+
else
|
35
|
+
xml.NotificationType("03")
|
36
|
+
end
|
37
|
+
xml.ProductIdentifier {
|
38
|
+
xml.ProductIDType("03")
|
39
|
+
xml.IDValue(product.ean)
|
40
|
+
}
|
41
|
+
product.proprietary_ids.each do |id|
|
42
|
+
xml.ProductIdentifier {
|
43
|
+
xml.ProductIDType("01")
|
44
|
+
if id.name
|
45
|
+
xml.IDTypeName(id.name)
|
46
|
+
end
|
47
|
+
xml.IDValue(id.value)
|
48
|
+
}
|
49
|
+
end
|
50
|
+
xml.DescriptiveDetail {
|
51
|
+
if product.bundle?
|
52
|
+
xml.ProductComposition("10")
|
53
|
+
else
|
54
|
+
xml.ProductComposition("00")
|
55
|
+
end
|
56
|
+
|
57
|
+
if product.digital?
|
58
|
+
xml.ProductForm("EA")
|
59
|
+
else
|
60
|
+
xml.ProductForm("BA")
|
61
|
+
end
|
62
|
+
|
63
|
+
if product.bundle?
|
64
|
+
product.parts.each do |part|
|
65
|
+
xml.ProductPart {
|
66
|
+
xml.ProductIdentifier {
|
67
|
+
xml.ProductIDType("03")
|
68
|
+
xml.IDValue(part.ean)
|
69
|
+
}
|
70
|
+
|
71
|
+
if part.file_format
|
72
|
+
xml.ProductForm("EA")
|
73
|
+
case part.file_format
|
74
|
+
when "Epub"
|
75
|
+
xml.ProductFormDetail("E101")
|
76
|
+
when "Pdf"
|
77
|
+
xml.ProductFormDetail("E107")
|
78
|
+
when "Mobipocket"
|
79
|
+
xml.ProductFormDetail("E127")
|
80
|
+
else
|
81
|
+
xml.ProductFormDetail("E100")
|
82
|
+
xml.ProductFormDescription(part.file_description)
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
xml.NumberOfCopies("1")
|
88
|
+
|
89
|
+
}
|
90
|
+
end
|
91
|
+
else
|
92
|
+
if product.digital?
|
93
|
+
case product.file_format
|
94
|
+
when "Epub"
|
95
|
+
xml.ProductFormDetail("E101")
|
96
|
+
when "Pdf"
|
97
|
+
xml.ProductFormDetail("E107")
|
98
|
+
when "Mobipocket"
|
99
|
+
xml.ProductFormDetail("E127")
|
100
|
+
else
|
101
|
+
xml.ProductFormDetail("E100")
|
102
|
+
xml.ProductFormDescription(product.file_description)
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
case product.protection_type
|
107
|
+
when "None"
|
108
|
+
xml.EpubTechnicalProtection("00")
|
109
|
+
when "Drm"
|
110
|
+
xml.EpubTechnicalProtection("01")
|
111
|
+
when "DigitalWatermarking"
|
112
|
+
xml.EpubTechnicalProtection("02")
|
113
|
+
when "AdobeDrm"
|
114
|
+
xml.EpubTechnicalProtection("03")
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
if product.publisher_collection_title
|
122
|
+
xml.Collection {
|
123
|
+
xml.CollectionType("10")
|
124
|
+
xml.TitleDetail {
|
125
|
+
xml.TitleType("01")
|
126
|
+
xml.TitleElement {
|
127
|
+
xml.TitleElementLevel("02")
|
128
|
+
xml.TitleText(product.publisher_collection_title)
|
129
|
+
}
|
130
|
+
}
|
131
|
+
}
|
132
|
+
end
|
133
|
+
|
134
|
+
xml.TitleDetail {
|
135
|
+
xml.TitleType("01")
|
136
|
+
xml.TitleElement {
|
137
|
+
xml.TitleElementLevel("01")
|
138
|
+
xml.TitleText(product.title)
|
139
|
+
if product.subtitle
|
140
|
+
xml.TitleText(product.subtitle)
|
141
|
+
end
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
145
|
+
product.contributors.each do |c|
|
146
|
+
xml.Contributor {
|
147
|
+
xml.SequenceNumber(c.sequence_number)
|
148
|
+
xml.ContributorRole(c.role.code)
|
149
|
+
xml.PersonName(c.name)
|
150
|
+
}
|
151
|
+
end
|
152
|
+
|
153
|
+
if product.edition_number
|
154
|
+
xml.EditionNumber(product.edition_number)
|
155
|
+
end
|
156
|
+
|
157
|
+
if product.language_of_text
|
158
|
+
xml.Language {
|
159
|
+
xml.LanguageRole("01")
|
160
|
+
xml.LanguageCode(product.language_of_text.code)
|
161
|
+
}
|
162
|
+
end
|
163
|
+
|
164
|
+
product.bisac_categories_codes.each do |s|
|
165
|
+
xml.Subject {
|
166
|
+
xml.SubjectSchemeIdentifier("10")
|
167
|
+
xml.SubjectCode(s)
|
168
|
+
}
|
169
|
+
end
|
170
|
+
product.clil_categories_codes.each do |s|
|
171
|
+
xml.Subject {
|
172
|
+
xml.SubjectSchemeIdentifier("29")
|
173
|
+
xml.SubjectCode(s)
|
174
|
+
}
|
175
|
+
end
|
176
|
+
|
177
|
+
if product.keywords.length > 0
|
178
|
+
xml.Subject {
|
179
|
+
xml.SubjectSchemeIdentifier("20")
|
180
|
+
xml.SubjectHeadingText(product.keywords.join(", "))
|
181
|
+
}
|
182
|
+
end
|
183
|
+
|
184
|
+
}
|
185
|
+
xml.CollateralDetail {
|
186
|
+
xml.TextContent {
|
187
|
+
xml.TextType("03")
|
188
|
+
xml.ContentAudience("00")
|
189
|
+
xml.Text(product.description)
|
190
|
+
}
|
191
|
+
|
192
|
+
# front cover
|
193
|
+
if product.frontcover_url
|
194
|
+
xml.SupportingResource {
|
195
|
+
xml.ResourceContentType("01")
|
196
|
+
xml.ContentAudience("00")
|
197
|
+
xml.ResourceMode("03")
|
198
|
+
xml.ResourceVersion {
|
199
|
+
xml.ResourceForm("02")
|
200
|
+
xml.ResourceLink(product.frontcover_url)
|
201
|
+
}
|
202
|
+
}
|
203
|
+
end
|
204
|
+
|
205
|
+
# sample
|
206
|
+
if product.epub_sample_url
|
207
|
+
xml.SupportingResource {
|
208
|
+
xml.ResourceContentType("15")
|
209
|
+
xml.ContentAudience("00")
|
210
|
+
xml.ResourceMode("04")
|
211
|
+
xml.ResourceVersion {
|
212
|
+
xml.ResourceForm("02")
|
213
|
+
xml.ResourceVersionFeature {
|
214
|
+
xml.ResourceVersionFeatureType("01")
|
215
|
+
xml.FeatureValue("E101")
|
216
|
+
}
|
217
|
+
xml.ResourceLink(product.epub_sample_url)
|
218
|
+
}
|
219
|
+
}
|
220
|
+
end
|
221
|
+
|
222
|
+
}
|
223
|
+
xml.PublishingDetail {
|
224
|
+
if product.imprint
|
225
|
+
xml.Imprint {
|
226
|
+
if product.imprint_gln
|
227
|
+
xml.ImprintIdentifier {
|
228
|
+
xml.ImprintIDType("06")
|
229
|
+
xml.IDValue(product.imprint_gln)
|
230
|
+
}
|
231
|
+
end
|
232
|
+
xml.ImprintName(product.imprint_name)
|
233
|
+
}
|
234
|
+
end
|
235
|
+
if product.publisher_name
|
236
|
+
xml.Publisher {
|
237
|
+
xml.PublishingRole("01")
|
238
|
+
if product.publisher_gln
|
239
|
+
xml.PublisherIdentifier {
|
240
|
+
xml.PublisherIDType("06")
|
241
|
+
xml.IDValue(product.publisher_gln)
|
242
|
+
}
|
243
|
+
end
|
244
|
+
xml.PublisherName(product.publisher_name)
|
245
|
+
}
|
246
|
+
end
|
247
|
+
|
248
|
+
if product.publication_date
|
249
|
+
xml.PublishingDate {
|
250
|
+
xml.PublishingDateRole("01")
|
251
|
+
xml.DateFormat("00")
|
252
|
+
xml.Date(product.publication_date.strftime("%Y%m%d"))
|
253
|
+
}
|
254
|
+
end
|
255
|
+
}
|
256
|
+
|
257
|
+
xml.RelatedMaterial {
|
258
|
+
if product.print_product
|
259
|
+
xml.RelatedProduct {
|
260
|
+
xml.ProductRelationCode("13")
|
261
|
+
xml.ProductIdentifier {
|
262
|
+
xml.ProductIDType("03")
|
263
|
+
xml.IDValue(product.print_product.ean)
|
264
|
+
}
|
265
|
+
}
|
266
|
+
end
|
267
|
+
|
268
|
+
unless product.sold_separately?
|
269
|
+
if product.part_of_product
|
270
|
+
xml.RelatedProduct {
|
271
|
+
xml.ProductRelationCode("02")
|
272
|
+
xml.ProductIdentifier {
|
273
|
+
xml.ProductIDType("03")
|
274
|
+
xml.IDValue(product.part_of_product.ean)
|
275
|
+
}
|
276
|
+
}
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
}
|
281
|
+
|
282
|
+
if product.sold_separately?
|
283
|
+
product.supplies.each do |supply|
|
284
|
+
xml.ProductSupply {
|
285
|
+
xml.Market {
|
286
|
+
xml.Territory {
|
287
|
+
if ONIX::Territory.worldwide?(supply[:territory])
|
288
|
+
xml.RegionsIncluded("WORLD")
|
289
|
+
else
|
290
|
+
xml.CountriesIncluded(supply[:territory].join(" "))
|
291
|
+
end
|
292
|
+
}
|
293
|
+
}
|
294
|
+
xml.MarketPublishingDetail {
|
295
|
+
if supply[:available]
|
296
|
+
xml.MarketPublishingStatus("04")
|
297
|
+
else
|
298
|
+
xml.MarketPublishingStatus("12")
|
299
|
+
end
|
300
|
+
if supply[:availability_date]
|
301
|
+
xml.MarketDate {
|
302
|
+
xml.MarketDateRole("01")
|
303
|
+
xml.DateFormat("00")
|
304
|
+
xml.Date(supply[:availability_date].strftime("%Y%m%d"))
|
305
|
+
}
|
306
|
+
end
|
307
|
+
}
|
308
|
+
|
309
|
+
xml.SupplyDetail {
|
310
|
+
xml.Supplier {
|
311
|
+
xml.SupplierRole("03")
|
312
|
+
if product.distributor
|
313
|
+
|
314
|
+
if product.distributor_gln
|
315
|
+
|
316
|
+
xml.SupplierIdentifier {
|
317
|
+
xml.SupplierIDType("06")
|
318
|
+
xml.IDValue(product.distributor_gln)
|
319
|
+
}
|
320
|
+
end
|
321
|
+
xml.SupplierName(product.distributor_name)
|
322
|
+
else
|
323
|
+
xml.SupplierName("Unknown")
|
324
|
+
end
|
325
|
+
}
|
326
|
+
|
327
|
+
|
328
|
+
if supply[:available]
|
329
|
+
xml.ProductAvailability("20")
|
330
|
+
else
|
331
|
+
xml.ProductAvailability("40")
|
332
|
+
end
|
333
|
+
|
334
|
+
supply[:prices].each do |price|
|
335
|
+
xml.Price {
|
336
|
+
if supply[:including_tax]
|
337
|
+
xml.PriceType("04")
|
338
|
+
else
|
339
|
+
xml.PriceType("03")
|
340
|
+
|
341
|
+
end
|
342
|
+
xml.PriceAmount(price[:amount].to_f/100.0)
|
343
|
+
xml.CurrencyCode(supply[:currency])
|
344
|
+
|
345
|
+
if price[:from_date]
|
346
|
+
xml.PriceDate {
|
347
|
+
xml.PriceDateRole("14")
|
348
|
+
xml.Date(price[:from_date].strftime("%Y%m%d"))
|
349
|
+
}
|
350
|
+
end
|
351
|
+
if price[:until_date]
|
352
|
+
xml.PriceDate {
|
353
|
+
xml.PriceDateRole("15")
|
354
|
+
xml.Date(price[:until_date].strftime("%Y%m%d"))
|
355
|
+
}
|
356
|
+
end
|
357
|
+
}
|
358
|
+
end
|
359
|
+
}
|
360
|
+
|
361
|
+
|
362
|
+
}
|
363
|
+
|
364
|
+
end
|
365
|
+
else
|
366
|
+
xml.ProductSupply {
|
367
|
+
xml.SupplyDetail {
|
368
|
+
xml.Supplier {
|
369
|
+
xml.SupplierRole("03")
|
370
|
+
if product.distributor
|
371
|
+
if product.distributor_gln
|
372
|
+
xml.SupplierIdentifier {
|
373
|
+
xml.SupplierIDType("06")
|
374
|
+
xml.IDValue(product.distributor_gln)
|
375
|
+
}
|
376
|
+
end
|
377
|
+
xml.SupplierName(product.distributor_name)
|
378
|
+
else
|
379
|
+
xml.SupplierName("Unknown")
|
380
|
+
end
|
381
|
+
|
382
|
+
}
|
383
|
+
xml.ProductAvailability("45")
|
384
|
+
xml.UnpricedItemType("03")
|
385
|
+
}
|
386
|
+
|
387
|
+
}
|
388
|
+
|
389
|
+
end
|
390
|
+
}
|
391
|
+
end
|
392
|
+
}
|
393
|
+
end
|
394
|
+
|
395
|
+
puts builder.to_xml
|
396
|
+
|
397
|
+
else
|
398
|
+
puts "Onix 3.0 to Onix 3.0 converter"
|
399
|
+
puts "Generate a flattened ONIX 3.0, be aware that conversion could be destructive"
|
400
|
+
puts "Usage: onix3_to_onix3.rb onix.xml"
|
401
|
+
end
|
data/bin/onix_bench.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'im_onix'
|
3
|
+
|
4
|
+
filename=ARGV[0]
|
5
|
+
|
6
|
+
if filename
|
7
|
+
bench=Benchmark.measure do
|
8
|
+
msg=ONIX::ONIXMessage.new
|
9
|
+
msg.parse(filename)
|
10
|
+
end
|
11
|
+
puts bench
|
12
|
+
else
|
13
|
+
puts "ImOnix parse benchmark"
|
14
|
+
puts "Usage: onix_bench.rb file.xml"
|
15
|
+
end
|