im_onix 1.2.3 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/onix/onix21.rb CHANGED
@@ -2,26 +2,28 @@ module ONIX
2
2
  module ONIX21
3
3
  class ShortToRef
4
4
  def self.names
5
- @shortnames ||= YAML.load(File.open(File.dirname(__FILE__) + "/../../data/onix21/shortnames.yml"))
5
+ @shortnames ||= YAML.load(File.open(File.dirname(__FILE__) + "/../../data/onix21/shortnames.yml")).freeze
6
6
  end
7
7
  end
8
8
 
9
9
  class RefToShort
10
10
  def self.names
11
- @refnames ||= ShortToRef.names.invert
11
+ @refnames ||= ShortToRef.names.invert.freeze
12
12
  end
13
13
  end
14
14
 
15
15
  class SubsetDSL < ONIX::SubsetDSL
16
- def self.short_to_ref(name)
17
- ONIX::ONIX21::ShortToRef.names[name]
18
- end
16
+ class << self
17
+ def short_to_ref(name)
18
+ ONIX::ONIX21::ShortToRef.names[name]
19
+ end
19
20
 
20
- def self.ref_to_short(name)
21
- ONIX::ONIX21::RefToShort.names[name]
21
+ def ref_to_short(name)
22
+ ONIX::ONIX21::RefToShort.names[name]
23
+ end
22
24
  end
23
25
 
24
- def self.get_class(name)
26
+ def get_class(name)
25
27
  if ONIX::ONIX21.const_defined?(name, false)
26
28
  ONIX::ONIX21.const_get(name)
27
29
  else
@@ -34,11 +36,11 @@ module ONIX
34
36
 
35
37
  class CodeFromYaml < Code
36
38
  def self.hash
37
- @hash ||= YAML.load(File.open(File.dirname(__FILE__) + "/../../data/onix21/codelists/codelist-#{self.code_ident}.yml"))[:codelist]
39
+ @hash ||= YAML.load(File.open(File.dirname(__FILE__) + "/../../data/onix21/codelists/codelist-#{self.code_ident}.yml"))[:codelist].freeze
38
40
  end
39
41
 
40
42
  def self.list
41
- self.hash.to_a.map { |h| h.first }
43
+ self.hash.keys
42
44
  end
43
45
 
44
46
  def self.code_ident
@@ -131,8 +133,8 @@ module ONIX
131
133
  class Price < SubsetDSL
132
134
  element "PriceTypeCode", :subset, :klass => "PriceType"
133
135
  element "PriceAmount", :float, {
134
- :shortcut => :amount,
135
- :parse_lambda => lambda { |v| (v * 100).round }
136
+ :shortcut => :amount,
137
+ :parse_lambda => lambda { |v| (v * 100).round }
136
138
  }
137
139
  element "PriceQualifier", :subset, :shortcut => :qualifier
138
140
  element "DiscountCoded", :subset
@@ -196,8 +198,8 @@ module ONIX
196
198
  element "AvailabilityCode", :text
197
199
  element "ProductAvailability", :text
198
200
  element "OnSaleDate", :text, {
199
- :shortcut => :availability_date,
200
- :parse_lambda => lambda { |v| Date.strptime(v, "%Y%m%d") }
201
+ :shortcut => :availability_date,
202
+ :parse_lambda => lambda { |v| Date.strptime(v, "%Y%m%d") }
201
203
  }
202
204
  elements "Price", :subset
203
205
 
@@ -232,8 +234,8 @@ module ONIX
232
234
  end
233
235
 
234
236
  class RelatedProduct < SubsetDSL
235
- include EanMethods
236
- include ProprietaryIdMethods
237
+ include IdentifiersMethods::Ean
238
+ include IdentifiersMethods::ProprietaryId
237
239
 
238
240
  element "RelationCode", :text, :shortcut => :code
239
241
  elements "ProductIdentifier", :subset, :shortcut => :identifiers
@@ -246,17 +248,17 @@ module ONIX
246
248
  element "SubjectCode", :text, :shortcut => :code
247
249
  element "SubjectHeadingText", :text, :shortcut => :heading_text
248
250
  element "MainSubjectSchemeIdentifier", :subset, {
249
- :shortcut => :scheme_identifier,
250
- :klass => "SubjectSchemeIdentifier"
251
+ :shortcut => :scheme_identifier,
252
+ :klass => "SubjectSchemeIdentifier"
251
253
  }
252
254
  element "SubjectSchemeName", :text, :shortcut => :scheme_name
253
255
  element "SubjectSchemeVersion", :text, :shortcut => :scheme_version
254
256
  end
255
257
 
256
258
  class Product < SubsetDSL
257
- include EanMethods
258
- include IsbnMethods
259
- include ProprietaryIdMethods
259
+ include IdentifiersMethods::Ean
260
+ include IdentifiersMethods::Isbn
261
+ include IdentifiersMethods::ProprietaryId
260
262
 
261
263
  element "RecordReference", :text
262
264
  elements "ProductIdentifier", :subset, :shortcut => :identifiers
@@ -281,7 +283,7 @@ module ONIX
281
283
 
282
284
  elements "OtherText", :subset
283
285
 
284
- elements "SalesRights", :subset, {:pluralize => false}
286
+ elements "SalesRights", :subset, { :pluralize => false }
285
287
  elements "NotForSale", :subset
286
288
 
287
289
  element "BASICMainSubject", :text
@@ -289,7 +291,7 @@ module ONIX
289
291
  elements "Subject", :subset
290
292
 
291
293
  element "PublishingStatus", :text
292
- element "PublicationDate", :text, {:parse_lambda => lambda { |v| Date.strptime(v, "%Y%m%d") }}
294
+ element "PublicationDate", :text, { :parse_lambda => lambda { |v| Date.strptime(v, "%Y%m%d") } }
293
295
 
294
296
  elements "RelatedProduct", :subset, :shortcut => :related
295
297
 
@@ -440,7 +442,7 @@ module ONIX
440
442
  nil
441
443
  end
442
444
 
443
- include ProductSuppliesExtractor
445
+ include ProductSuppliesMethods
444
446
 
445
447
  # doesn't apply
446
448
  def parts
data/lib/onix/product.rb CHANGED
@@ -3,6 +3,7 @@ require 'onix/helper'
3
3
  require 'onix/code'
4
4
  require 'onix/entity'
5
5
  require 'onix/identifier'
6
+ require 'onix/barcode'
6
7
  require 'onix/descriptive_detail'
7
8
  require 'onix/publishing_detail'
8
9
  require 'onix/collateral_detail'
@@ -12,15 +13,15 @@ require 'onix/product_supply'
12
13
  require 'onix/content_detail'
13
14
  require 'onix/territory'
14
15
  require 'onix/error'
15
- require 'onix/product_supplies_extractor'
16
+ require 'onix/product_supplies_methods'
16
17
 
17
18
  module ONIX
18
19
  class Product < SubsetDSL
19
20
  extend Forwardable
20
- include EanMethods
21
- include IsbnMethods
22
- include ProprietaryIdMethods
23
- include ProductSuppliesExtractor
21
+ include IdentifiersMethods::Ean
22
+ include IdentifiersMethods::Isbn
23
+ include IdentifiersMethods::ProprietaryId
24
+ include ProductSuppliesMethods
24
25
 
25
26
  element "RecordReference", :text, :cardinality => 1
26
27
  element "NotificationType", :subset, :cardinality => 1
@@ -29,10 +30,7 @@ module ONIX
29
30
  elements "RecordSourceIdentifier", :subset, :cardinality => 0..n
30
31
  element "RecordSourceName", :text, :cardinality => 0..1
31
32
  elements "ProductIdentifier", :subset, :shortcut => :identifiers, :cardinality => 0..n
32
-
33
- # elements "Barcode", :subset, :cardinality => 0..n
34
-
35
-
33
+ elements "Barcode", :subset, :cardinality => 0..n
36
34
  element "DescriptiveDetail", :subset, :cardinality => 0..1
37
35
  element "CollateralDetail", :subset, :cardinality => 0..1
38
36
 
@@ -1,8 +1,8 @@
1
1
  module ONIX
2
2
  # product part use full Product to provide file protection and file size
3
3
  class ProductPart < SubsetDSL
4
- include EanMethods
5
- include ProprietaryIdMethods
4
+ include IdentifiersMethods::Ean
5
+ include IdentifiersMethods::ProprietaryId
6
6
 
7
7
  element "PrimaryPart", :bool, :cardinality => 0..1
8
8
  elements "ProductIdentifier", :subset, :shortcut => :identifiers, :cardinality => 0..n
@@ -1,6 +1,6 @@
1
1
  module ONIX
2
2
  # flattened supplies extractor
3
- module ProductSuppliesExtractor
3
+ module ProductSuppliesMethods
4
4
  # class must define a product_supplies returning an Array of objects responding to :
5
5
  # - availability_date (Date)
6
6
  # - countries (country code Array)
@@ -112,7 +112,7 @@ module ONIX
112
112
 
113
113
  # merge by territories
114
114
  grouped_territories_supplies = {}
115
- grouped_supplies.each do |ksup, supply|
115
+ grouped_supplies.values.each do |supply|
116
116
  fsupply = supply.first
117
117
  pr_key = "#{fsupply[:available]}_#{fsupply[:including_tax]}_#{fsupply[:currency]}"
118
118
  supply.each do |s|
@@ -124,7 +124,7 @@ module ONIX
124
124
 
125
125
  supplies = []
126
126
 
127
- grouped_territories_supplies.each do |ksup, supply|
127
+ grouped_territories_supplies.values.each do |supply|
128
128
  fsupply = supply.first.first
129
129
  supplies << {:including_tax => fsupply[:including_tax], :currency => fsupply[:currency],
130
130
  :territory => supply.map { |fs| fs.map { |s| s[:territory] } }.flatten.uniq,
@@ -0,0 +1,11 @@
1
+ module ONIX
2
+ class PublisherRepresentative < SubsetDSL
3
+ element "AgentRole", :subset, :cardinality => 1
4
+ elements "AgentIdentifier", :subset, :cardinality => 0..n
5
+ element "AgentName", :text, :cardinality => 0..1
6
+ elements "TelephoneNumber", :text, :cardinality => 0..n
7
+ elements "FaxNumber", :text, :cardinality => 0..n
8
+ elements "EmailAddress", :text, :cardinality => 0..n
9
+ elements "Website", :subset, :cardinality => 0..n
10
+ end
11
+ end
@@ -1,7 +1,7 @@
1
1
  module ONIX
2
2
  class RelatedProduct < SubsetDSL
3
- include EanMethods
4
- include ProprietaryIdMethods
3
+ include IdentifiersMethods::Ean
4
+ include IdentifiersMethods::ProprietaryId
5
5
 
6
6
  elements "ProductRelationCode", :subset, :shortcut => :codes, :cardinality => 1..n
7
7
  elements "ProductIdentifier", :subset, :shortcut => :identifiers, :cardinality => 1..n
@@ -1,6 +1,7 @@
1
1
  module ONIX
2
2
  class RelatedWork < SubsetDSL
3
- include EanMethods
3
+ include IdentifiersMethods::Ean
4
+
4
5
  element "WorkRelationCode", :subset, :shortcut => :code, :cardinality => 0..n
5
6
  elements "WorkIdentifier", :subset, :shortcut => :identifiers, :cardinality => 0..n
6
7
 
data/lib/onix/sender.rb CHANGED
@@ -2,7 +2,7 @@ require 'onix/identifier'
2
2
 
3
3
  module ONIX
4
4
  class Sender < SubsetDSL
5
- include GlnMethods
5
+ include IdentifiersMethods::Gln
6
6
 
7
7
  elements "SenderIdentifier", :subset, :shortcut => :identifiers, :cardinality => 0..n
8
8
  element "SenderName", :text, :shortcut => :name, :cardinality => 0..1
@@ -18,10 +18,10 @@ module ONIX
18
18
  if subset.is_a?(ONIX::ONIXMessage)
19
19
  mod.const_get("Root").serialize(data, subset, "ONIXMessage", level)
20
20
  else
21
- if subset.class.included_modules.include?(DateHelper)
21
+ if subset.class.included_modules.include?(DateMethods)
22
22
  mod.const_get("Date").serialize(data, subset, parent_tag, level)
23
23
  else
24
- if subset.class.included_modules.include?(CodeHelper)
24
+ if subset.class.included_modules.include?(CodeMethods)
25
25
  mod.const_get("Code").serialize(data, subset, parent_tag, level)
26
26
  else
27
27
  mod.const_get("Subset").serialize(data, subset, parent_tag, level)
@@ -47,8 +47,8 @@ module ONIX
47
47
  end
48
48
 
49
49
  def self.recursive_serialize(mod, data, subset, parent_tag = nil, level = 0)
50
- if subset.class.respond_to?(:ancestors_registered_elements)
51
- subset.class.ancestors_registered_elements.each do |tag, element|
50
+ if subset.respond_to?(:registered_elements)
51
+ subset.registered_elements.each do |tag, element|
52
52
  next if element.short
53
53
  val = subset.instance_variable_get(element.to_instance)
54
54
  if val
@@ -112,7 +112,7 @@ module ONIX
112
112
  code_format = date.format_from_code(date_format.code)
113
113
 
114
114
  xml.send(parent_tag, nil) {
115
- date.class.ancestors_registered_elements.each do |tag, element|
115
+ date.registered_elements.each do |tag, element|
116
116
  next if element.short
117
117
  val = date.instance_variable_get(element.to_instance)
118
118
  if val