elibri_onix 0.1.23 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Gemfile.lock +3 -5
- data/elibri_onix.gemspec +2 -1
- data/lib/elibri_onix.rb +3 -2
- data/lib/elibri_onix/external_id.rb +15 -2
- data/lib/elibri_onix/external_timestamp.rb +5 -1
- data/lib/elibri_onix/nokogiri_patch.rb +17 -0
- data/lib/elibri_onix/onix_3_0/audience_range.rb +14 -8
- data/lib/elibri_onix/onix_3_0/collection.rb +10 -9
- data/lib/elibri_onix/onix_3_0/contributor.rb +21 -18
- data/lib/elibri_onix/onix_3_0/extent.rb +18 -11
- data/lib/elibri_onix/onix_3_0/header.rb +7 -6
- data/lib/elibri_onix/onix_3_0/imprint.rb +6 -5
- data/lib/elibri_onix/onix_3_0/language.rb +16 -9
- data/lib/elibri_onix/onix_3_0/measure.rb +17 -9
- data/lib/elibri_onix/onix_3_0/onix_message.rb +14 -30
- data/lib/elibri_onix/onix_3_0/price.rb +19 -17
- data/lib/elibri_onix/onix_3_0/product.rb +118 -77
- data/lib/elibri_onix/onix_3_0/product_identifier.rb +9 -7
- data/lib/elibri_onix/onix_3_0/publisher.rb +19 -9
- data/lib/elibri_onix/onix_3_0/publishing_date.rb +10 -9
- data/lib/elibri_onix/onix_3_0/related_product.rb +10 -15
- data/lib/elibri_onix/onix_3_0/sales_restriction.rb +11 -8
- data/lib/elibri_onix/onix_3_0/sender.rb +9 -8
- data/lib/elibri_onix/onix_3_0/stock_quantity_coded.rb +8 -11
- data/lib/elibri_onix/onix_3_0/subject.rb +19 -13
- data/lib/elibri_onix/onix_3_0/supplier.rb +15 -12
- data/lib/elibri_onix/onix_3_0/supplier_identifier.rb +9 -8
- data/lib/elibri_onix/onix_3_0/supply_detail.rb +16 -15
- data/lib/elibri_onix/onix_3_0/supporting_resource.rb +15 -15
- data/lib/elibri_onix/onix_3_0/text_content.rb +18 -15
- data/lib/elibri_onix/onix_3_0/title_detail.rb +17 -11
- data/lib/elibri_onix/onix_3_0/title_element.rb +10 -9
- data/lib/elibri_onix/version.rb +1 -1
- data/test/elibri_contributors_test.rb +1 -1
- data/test/elibri_onix_release_3_0_onix_message_test.rb +2 -2
- data/test/elibri_supporting_resources_test.rb +1 -1
- data/test/elibri_texts_test.rb +4 -4
- data/test/helper.rb +2 -1
- metadata +252 -295
@@ -6,23 +6,24 @@ module Elibri
|
|
6
6
|
module Release_3_0
|
7
7
|
|
8
8
|
class PublishingDate
|
9
|
-
include ROXML
|
10
|
-
include Inspector
|
11
|
-
|
12
|
-
xml_name 'PublishingDate'
|
13
|
-
|
14
|
-
xml_accessor :role, :from => 'PublishingDateRole'
|
15
|
-
xml_accessor :format, :from => 'DateFormat'
|
16
|
-
xml_accessor :date, :from => 'Date'
|
17
9
|
|
18
10
|
ATTRIBUTES = [
|
19
11
|
:role, :format, :date, :parsed
|
20
12
|
]
|
21
13
|
|
22
14
|
RELATIONS = []
|
15
|
+
|
16
|
+
attr_accessor :role, :format, :date, :to_xml
|
17
|
+
|
18
|
+
def initialize(data)
|
19
|
+
@to_xml = data.to_s
|
20
|
+
@role = data.at_xpath('xmlns:PublishingDateRole').try(:text)
|
21
|
+
@format = data.at_xpath('xmlns:DateFormat').try(:text)
|
22
|
+
@date = data.at_xpath('xmlns:Date').try(:text)
|
23
|
+
end
|
23
24
|
|
24
25
|
def parsed
|
25
|
-
case format
|
26
|
+
case @format
|
26
27
|
when '00' then [date[0...4].to_i, date[4...6].to_i, date[6...8].to_i]
|
27
28
|
when '01' then [date[0...4].to_i, date[4...6].to_i]
|
28
29
|
when '05' then [date[0...4].to_i]
|
@@ -7,38 +7,33 @@ module Elibri
|
|
7
7
|
module Release_3_0
|
8
8
|
|
9
9
|
class RelatedProduct
|
10
|
-
include ROXML
|
11
|
-
include Inspector
|
12
|
-
|
13
|
-
xml_name 'RelatedProduct'
|
14
|
-
|
15
|
-
xml_accessor :relation_code, :from => 'ProductRelationCode'
|
16
|
-
xml_accessor :identifiers, :as => [ProductIdentifier]
|
17
10
|
|
18
11
|
ATTRIBUTES = [
|
19
|
-
:relation_code, :
|
12
|
+
:relation_code, :proprietary_identifiers, :record_reference
|
20
13
|
]
|
21
14
|
|
22
15
|
RELATIONS = [
|
23
16
|
:identifiers
|
24
17
|
]
|
25
18
|
|
26
|
-
|
27
|
-
|
28
|
-
def
|
29
|
-
|
19
|
+
attr_accessor :relation_code, :identifiers, :to_xml
|
20
|
+
|
21
|
+
def initialize(data)
|
22
|
+
@to_xml = data.to_s
|
23
|
+
@relation_code = data.at_xpath('xmlns:ProductRelationCode').try(:text)
|
24
|
+
@identifiers = data.xpath('xmlns:ProductIdentifier').map { |identifier_data| ProductIdentifier.new(identifier_data) }
|
30
25
|
end
|
31
26
|
|
32
27
|
|
33
28
|
def record_reference
|
34
|
-
identifiers.find {|identifier| identifier.type
|
29
|
+
@identifiers.find {|identifier| identifier.type == '01' && identifier.type_name == 'elibri' }.try(:value)
|
35
30
|
end
|
36
31
|
|
37
32
|
|
38
33
|
def proprietary_identifiers
|
39
34
|
Hash.new.tap do |hash|
|
40
|
-
identifiers.each do |identifier|
|
41
|
-
hash[identifier.type_name] = identifier.value if identifier.type ==
|
35
|
+
@identifiers.each do |identifier|
|
36
|
+
hash[identifier.type_name] = identifier.value if identifier.type == '01'
|
42
37
|
end
|
43
38
|
end
|
44
39
|
end
|
@@ -6,20 +6,23 @@ module Elibri
|
|
6
6
|
module Release_3_0
|
7
7
|
|
8
8
|
class SalesRestriction
|
9
|
-
include ROXML
|
10
|
-
include Inspector
|
11
|
-
|
12
|
-
xml_name 'SalesRestriction'
|
13
|
-
|
14
|
-
xml_accessor :type, :from => 'SalesRestrictionType', :as => Fixnum
|
15
|
-
xml_accessor :outlet_name, :from => 'SalesOutletName', :in => 'SalesOutlet'
|
16
|
-
xml_accessor :end_date, :from => 'EndDate', :as => Date
|
17
9
|
|
18
10
|
ATTRIBUTES = [
|
19
11
|
:type, :outlet_name, :end_date
|
20
12
|
]
|
21
13
|
|
22
14
|
RELATIONS = []
|
15
|
+
|
16
|
+
attr_accessor :type, :outlet_name, :end_date, :to_xml
|
17
|
+
|
18
|
+
def initialize(data)
|
19
|
+
@to_xml = data.to_s
|
20
|
+
@type = data.at_xpath('xmlns:SalesRestrictionType').try(:text).try(:to_i)
|
21
|
+
if data.at_xpath('xmlns:SalesOutlet')
|
22
|
+
@outlet_name = data.at_xpath('xmlns:SalesOutlet').at_xpath('xmlns:SalesOutletName').try(:text)
|
23
|
+
end
|
24
|
+
@end_date = Date.parse(data.at_xpath('xmlns:EndDate').try(:text)) if data.at_xpath('xmlns:EndDate')
|
25
|
+
end
|
23
26
|
|
24
27
|
end
|
25
28
|
|
@@ -4,14 +4,8 @@ module Elibri
|
|
4
4
|
module Release_3_0
|
5
5
|
|
6
6
|
class Sender
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
xml_name 'Sender'
|
11
|
-
|
12
|
-
xml_accessor :sender_name, :from => 'SenderName'
|
13
|
-
xml_accessor :contact_name, :from => 'ContactName'
|
14
|
-
xml_accessor :email_address, :from => 'EmailAddress'
|
7
|
+
|
8
|
+
attr_accessor :sender_name, :contact_name, :email_address, :to_xml
|
15
9
|
|
16
10
|
ATTRIBUTES = [
|
17
11
|
:sender_name, :contact_name, :email_address
|
@@ -19,6 +13,13 @@ module Elibri
|
|
19
13
|
|
20
14
|
RELATIONS = []
|
21
15
|
|
16
|
+
def initialize(data)
|
17
|
+
@to_xml = data.to_s
|
18
|
+
@sender_name = data.at_xpath('xmlns:SenderName').text
|
19
|
+
@contact_name = data.at_xpath('xmlns:ContactName').text
|
20
|
+
@email_address = data.at_xpath('xmlns:EmailAddress').text
|
21
|
+
end
|
22
|
+
|
22
23
|
end
|
23
24
|
|
24
25
|
end
|
@@ -1,26 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
1
|
module Elibri
|
6
2
|
module ONIX
|
7
3
|
module Release_3_0
|
8
4
|
|
9
5
|
class StockQuantityCoded
|
10
|
-
include ROXML
|
11
|
-
include Inspector
|
12
6
|
|
13
|
-
xml_name 'StockQuantityCoded'
|
14
|
-
|
15
|
-
xml_accessor :code_type, :from => 'StockQuantityCodeType', :as => Fixnum
|
16
|
-
xml_accessor :code, :from => 'StockQuantityCode'
|
17
|
-
|
18
7
|
ATTRIBUTES = [
|
19
8
|
:code_type, :code
|
20
9
|
]
|
21
10
|
|
22
11
|
RELATIONS = []
|
23
12
|
|
13
|
+
attr_accessor :code_type, :code, :to_xml
|
14
|
+
|
15
|
+
def initialize(data)
|
16
|
+
@to_xml = data.to_s
|
17
|
+
@code_type = data.at_xpath('xmlns:StockQuantityCodeType').try(:text).try(:to_i)
|
18
|
+
@code = data.at_xpath('xmlns:StockQuantityCode').try(:text)
|
19
|
+
end
|
20
|
+
|
24
21
|
end
|
25
22
|
|
26
23
|
end
|
@@ -5,30 +5,36 @@ module Elibri
|
|
5
5
|
module Release_3_0
|
6
6
|
|
7
7
|
class Subject
|
8
|
-
include ROXML
|
9
|
-
include Inspector
|
10
|
-
|
11
|
-
xml_name 'Subject'
|
12
|
-
xml_accessor :scheme_identifier, :from => 'SubjectSchemeIdentifier', :as => Fixnum
|
13
|
-
xml_accessor :scheme_name, :from => 'SubjectSchemeName'
|
14
|
-
xml_accessor :scheme_version, :from => 'SubjectSchemeVersion'
|
15
|
-
xml_accessor :code, :from => 'SubjectCode'
|
16
|
-
xml_accessor :heading_text, :from => 'SubjectHeadingText'
|
17
|
-
|
18
|
-
xml_accessor :main_subject, :from => 'MainSubject'
|
19
8
|
|
20
9
|
ATTRIBUTES = [
|
21
10
|
:scheme_identifier, :scheme_name, :scheme_version, :code, :heading_text, :main_subject
|
22
11
|
]
|
23
12
|
|
13
|
+
attr_accessor :scheme_identifier, :scheme_name, :scheme_version, :code, :heading_text, :main_subject, :to_xml
|
14
|
+
|
24
15
|
RELATIONS = []
|
16
|
+
|
17
|
+
def initialize(data)
|
18
|
+
@to_xml = data.to_s
|
19
|
+
@scheme_identifier = data.xpath('xmlns:SubjectSchemeIdentifier').try(:text).try(:to_i)
|
20
|
+
@scheme_name = data.xpath('xmlns:SubjectSchemeName').try(:text)
|
21
|
+
@scheme_version = data.xpath('xmlns:SubjectSchemeVersion').try(:text)
|
22
|
+
@code = data.xpath('xmlns:SubjectCode').try(:text)
|
23
|
+
@heading_text = data.xpath('xmlns:SubjectHeadingText').try(:text)
|
24
|
+
@main_subject = data.xpath('xmlns:MainSubject').blank? ? nil : ''
|
25
|
+
end
|
25
26
|
|
26
27
|
def main_subject?
|
27
|
-
main_subject == ''
|
28
|
+
@main_subject == ''
|
28
29
|
end
|
29
30
|
|
31
|
+
def eid
|
32
|
+
@code
|
33
|
+
end
|
34
|
+
|
30
35
|
def id
|
31
|
-
|
36
|
+
Kernel.warn "[DEPRECATION] `id` is deprecated. Please use `eid` instead."
|
37
|
+
eid
|
32
38
|
end
|
33
39
|
|
34
40
|
end
|
@@ -6,17 +6,6 @@ module Elibri
|
|
6
6
|
module Release_3_0
|
7
7
|
|
8
8
|
class Supplier
|
9
|
-
include ROXML
|
10
|
-
include Inspector
|
11
|
-
|
12
|
-
xml_name 'Supplier'
|
13
|
-
|
14
|
-
xml_accessor :role, :from => 'SupplierRole', :as => Fixnum
|
15
|
-
xml_accessor :identifiers, :as => [SupplierIdentifier]
|
16
|
-
xml_accessor :name, :from => 'SupplierName'
|
17
|
-
xml_accessor :telephone_number, :from => 'TelephoneNumber'
|
18
|
-
xml_accessor :email_address, :from => 'EmailAddress'
|
19
|
-
xml_accessor :website, :from => 'WebsiteLink', :in => 'Website'
|
20
9
|
|
21
10
|
ATTRIBUTES = [
|
22
11
|
:role, :name, :telephone_number, :email_address, :website, :nip
|
@@ -25,9 +14,23 @@ module Elibri
|
|
25
14
|
RELATIONS = [
|
26
15
|
:identifiers
|
27
16
|
]
|
17
|
+
|
18
|
+
attr_accessor :role, :identifiers, :name, :telephone_number, :email_address, :website, :to_xml
|
19
|
+
|
20
|
+
def initialize(data)
|
21
|
+
@to_xml = data.to_s
|
22
|
+
@role = data.at_xpath('xmlns:SupplierRole').try(:text).try(:to_i)
|
23
|
+
@identifiers = data.xpath('xmlns:SupplierIdentifier').map { |identifier_data| SupplierIdentifier.new(identifier_data) }
|
24
|
+
@name = data.at_xpath('xmlns:SupplierName').try(:text)
|
25
|
+
@telephone_number = data.at_xpath('xmlns:TelephoneNumber').try(:text)
|
26
|
+
@email_address = data.at_xpath('xmlns:EmailAddress').try(:text)
|
27
|
+
if data.at_xpath('xmlns:Website')
|
28
|
+
@website = data.at_xpath('xmlns:Website').at_xpath('xmlns:WebsiteLink').try(:text)
|
29
|
+
end
|
30
|
+
end
|
28
31
|
|
29
32
|
def nip
|
30
|
-
identifiers.find {|identifier| (identifier.type ==
|
33
|
+
@identifiers.find {|identifier| (identifier.type == '02') && (identifier.type_name == 'NIP')}.try(:value)
|
31
34
|
end
|
32
35
|
|
33
36
|
end
|
@@ -7,20 +7,21 @@ module Elibri
|
|
7
7
|
module Release_3_0
|
8
8
|
|
9
9
|
class SupplierIdentifier
|
10
|
-
include ROXML
|
11
|
-
include Inspector
|
12
|
-
|
13
|
-
xml_name 'SupplierIdentifier'
|
14
|
-
|
15
|
-
xml_accessor :type, :from => 'SupplierIDType', :as => Fixnum
|
16
|
-
xml_accessor :type_name, :from => 'IDTypeName'
|
17
|
-
xml_accessor :value, :from => 'IDValue'
|
18
10
|
|
19
11
|
ATTRIBUTES = [
|
20
12
|
:type, :type_name, :value
|
21
13
|
]
|
22
14
|
|
23
15
|
RELATIONS = []
|
16
|
+
|
17
|
+
attr_accessor :type, :type_name, :value, :to_xml
|
18
|
+
|
19
|
+
def initialize(data)
|
20
|
+
@to_xml = data.to_s
|
21
|
+
@type = data.at_xpath('xmlns:SupplierIDType').try(:text)
|
22
|
+
@type_name = data.at_xpath('xmlns:IDTypeName').try(:text)
|
23
|
+
@value = data.at_xpath('xmlns:IDValue').try(:text)
|
24
|
+
end
|
24
25
|
|
25
26
|
end
|
26
27
|
end
|
@@ -6,29 +6,30 @@ module Elibri
|
|
6
6
|
module Release_3_0
|
7
7
|
|
8
8
|
class SupplyDetail
|
9
|
-
include ROXML
|
10
|
-
include Inspector
|
11
|
-
|
12
|
-
xml_name 'SupplyDetail'
|
13
|
-
|
14
|
-
xml_accessor :relation_code, :from => 'ProductRelationCode', :as => Fixnum
|
15
|
-
xml_accessor :supplier, :as => Supplier
|
16
|
-
xml_accessor :product_availability, :from => 'ProductAvailability', :as => Fixnum
|
17
|
-
xml_accessor :pack_quantity, :from => 'PackQuantity', :as => Fixnum
|
18
|
-
xml_accessor :price, :as => Price
|
19
|
-
|
20
|
-
|
21
|
-
xml_accessor :on_hand, :in => 'Stock', :from => 'OnHand', :as => Fixnum
|
22
|
-
xml_accessor :quantity_coded, :in => 'Stock', :as => StockQuantityCoded
|
23
9
|
|
24
10
|
ATTRIBUTES = [
|
25
11
|
:relation_code, :supplier, :product_availability, :pack_quantity, :price, :on_hand, :quantity_coded, :quantity_code
|
26
12
|
]
|
13
|
+
|
14
|
+
attr_accessor :relation_code, :supplier, :product_availability, :pack_quantity, :price, :on_hand, :quantity_coded, :to_xml
|
27
15
|
|
28
16
|
RELATIONS = []
|
17
|
+
|
18
|
+
def initialize(data)
|
19
|
+
@to_xml = data.to_s
|
20
|
+
@relation_code = data.at_xpath('xmlns:ProductRelationCode').try(:text).try(:to_i)
|
21
|
+
@supplier = Supplier.new(data.at_xpath('xmlns:Supplier')) if data.at_xpath('xmlns:Supplier')
|
22
|
+
@product_availability = data.at_xpath('xmlns:ProductAvailability').try(:text).try(:to_i)
|
23
|
+
@pack_quantity = data.at_xpath('xmlns:PackQuantity').try(:text).try(:to_i)
|
24
|
+
@price = Price.new(data.at_xpath('xmlns:Price')) if data.at_xpath('xmlns:Price')
|
25
|
+
if data.at_xpath('xmlns:Stock')
|
26
|
+
@on_hand = data.at_xpath('xmlns:Stock').at_xpath('xmlns:OnHand').try(:text).try(:to_i)
|
27
|
+
@quantity_coded = StockQuantityCoded.new(data.at_xpath('xmlns:Stock').at_xpath('xmlns:StockQuantityCoded')) if data.at_xpath('xmlns:Stock').at_xpath('xmlns:StockQuantityCoded')
|
28
|
+
end
|
29
|
+
end
|
29
30
|
|
30
31
|
def quantity_code
|
31
|
-
quantity_coded.try(:code)
|
32
|
+
@quantity_coded.try(:code)
|
32
33
|
end
|
33
34
|
|
34
35
|
end
|
@@ -5,20 +5,8 @@ module Elibri
|
|
5
5
|
module Release_3_0
|
6
6
|
|
7
7
|
class SupportingResource
|
8
|
-
include ROXML
|
9
|
-
include Inspector
|
10
8
|
include ExternalId
|
11
9
|
include ExternalTimestamp
|
12
|
-
|
13
|
-
|
14
|
-
xml_name 'SupportingResource'
|
15
|
-
|
16
|
-
xml_accessor :content_type, :from => 'ResourceContentType'
|
17
|
-
#xml_accessor :audience, :from => 'ContentAudience' - always unrestricted
|
18
|
-
xml_accessor :mode, :from => 'ResourceMode'
|
19
|
-
|
20
|
-
xml_accessor :form, :in => 'ResourceVersion', :from => 'ResourceForm'
|
21
|
-
xml_accessor :link, :in => 'ResourceVersion', :from => 'ResourceLink'
|
22
10
|
|
23
11
|
ATTRIBUTES = [
|
24
12
|
:content_type, :mode, :form, :link, :content_type_name, :mode_name, :form_name
|
@@ -27,9 +15,21 @@ module Elibri
|
|
27
15
|
RELATIONS = [
|
28
16
|
:inspect_include_fields
|
29
17
|
]
|
18
|
+
|
19
|
+
attr_accessor :content_type, :mode, :form, :link, :to_xml
|
20
|
+
|
21
|
+
def initialize(data)
|
22
|
+
@to_xml = data.to_s
|
23
|
+
@content_type = data.at_xpath('xmlns:ResourceContentType').try(:text)
|
24
|
+
@mode = data.at_xpath('xmlns:ResourceMode').try(:text)
|
25
|
+
@form = data.at_xpath('xmlns:ResourceVersion').at_xpath('xmlns:ResourceForm').try(:text)
|
26
|
+
@link = data.at_xpath('xmlns:ResourceVersion').at_xpath('xmlns:ResourceLink').try(:text)
|
27
|
+
set_eid(data)
|
28
|
+
set_datestamp(data)
|
29
|
+
end
|
30
30
|
|
31
31
|
def content_type_name
|
32
|
-
Elibri::ONIX::Dict::Release_3_0::ResourceContentType.find_by_onix_code(content_type).const_name.downcase
|
32
|
+
Elibri::ONIX::Dict::Release_3_0::ResourceContentType.find_by_onix_code(@content_type).const_name.downcase
|
33
33
|
end
|
34
34
|
|
35
35
|
#def audience_name
|
@@ -37,11 +37,11 @@ module Elibri
|
|
37
37
|
#end
|
38
38
|
|
39
39
|
def mode_name
|
40
|
-
Elibri::ONIX::Dict::Release_3_0::ResourceMode.find_by_onix_code(mode).const_name.downcase
|
40
|
+
Elibri::ONIX::Dict::Release_3_0::ResourceMode.find_by_onix_code(@mode).const_name.downcase
|
41
41
|
end
|
42
42
|
|
43
43
|
def form_name
|
44
|
-
Elibri::ONIX::Dict::Release_3_0::ResourceForm.find_by_onix_code(form).const_name.downcase
|
44
|
+
Elibri::ONIX::Dict::Release_3_0::ResourceForm.find_by_onix_code(@form).const_name.downcase
|
45
45
|
end
|
46
46
|
|
47
47
|
def inspect_include_fields
|
@@ -4,20 +4,8 @@ module Elibri
|
|
4
4
|
module Release_3_0
|
5
5
|
|
6
6
|
class TextContent
|
7
|
-
|
8
|
-
|
9
|
-
include ExternalId
|
10
|
-
include ExternalTimestamp
|
11
|
-
|
12
|
-
xml_name 'TextContent'
|
13
|
-
|
14
|
-
xml_accessor :type, :from => 'TextType'
|
15
|
-
#xml_accessor :audience, :from => 'ContentAudience' - always unrestricted
|
16
|
-
xml_accessor :author, :from => 'TextAuthor'
|
17
|
-
xml_accessor :source_title, :from => 'SourceTitle'
|
18
|
-
|
19
|
-
xml_accessor :text, :from => 'Text', :cdata => true
|
20
|
-
xml_accessor :source_url, :from => '@sourcename', :in => 'Text'
|
7
|
+
include ExternalId
|
8
|
+
include ExternalTimestamp
|
21
9
|
|
22
10
|
ATTRIBUTES = [
|
23
11
|
:type, :author, :source_title, :text, :source_url, :type_name
|
@@ -26,9 +14,24 @@ module Elibri
|
|
26
14
|
RELATIONS = [
|
27
15
|
:inspect_include_fields
|
28
16
|
]
|
17
|
+
|
18
|
+
attr_accessor :type, :author, :source_title, :text, :source_url, :to_xml
|
19
|
+
|
20
|
+
def initialize(data)
|
21
|
+
@to_xml = data.to_s
|
22
|
+
@type = data.at_xpath('xmlns:TextType').try(:text)
|
23
|
+
@author = data.at_xpath('xmlns:TextAuthor').try(:text)
|
24
|
+
@source_title = data.at_xpath('xmlns:SourceTitle').try(:text)
|
25
|
+
if data.at_xpath('xmlns:Text')
|
26
|
+
@text = data.at_xpath('xmlns:Text').children.find { |x| x.cdata? }.try(:text) #cdata => true ?
|
27
|
+
@source_url = data.at_xpath('xmlns:Text').attribute('sourcename').try(:text)
|
28
|
+
end
|
29
|
+
set_eid(data)
|
30
|
+
set_datestamp(data)
|
31
|
+
end
|
29
32
|
|
30
33
|
def type_name
|
31
|
-
Elibri::ONIX::Dict::Release_3_0::OtherTextType.find_by_onix_code(type).const_name.downcase
|
34
|
+
Elibri::ONIX::Dict::Release_3_0::OtherTextType.find_by_onix_code(@type).const_name.downcase
|
32
35
|
end
|
33
36
|
|
34
37
|
|