elibri_onix_generator 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71115f37bcde9eda5eebb3b355c90fc81753edf7
4
- data.tar.gz: f45550badba24f0d037cf30bb601582e63e7e51a
3
+ metadata.gz: 4c05a34a89b8b767c29e2944702fa2f586141b4c
4
+ data.tar.gz: 57210eef6751fccbf7182f4d90c695151f7c2ce1
5
5
  SHA512:
6
- metadata.gz: 3ea02de5f3868a36a6bad48d85f7d8bd059a676e9e0c7fcc6ee9d6826be853366587ad7414cacfacf9a96645b0cf43f9030bd03df5828b5be26b35eeed66918e
7
- data.tar.gz: d1784ced28c754a6b9cd217306f742f5727fa46f927f63e974e5d849687d4617dff85af73668bd79f49538c4d9290a896a9d8d85269f9e5b00494e32a493a3bf
6
+ metadata.gz: 908de32a9a946c7b44492c7a4875e546d8d45880c6ab626e6c9cdf64f870ab5d37817436c6f950728a28d2770b00279caf11877ae85d9b9dbb7183e740ec5dea
7
+ data.tar.gz: 158d5f989653fef2247d5907a0af63fae295c216cd00462f7c045bfd306fe4ad691c2a40f7e7a0328f274e8a8f1f7add294e7cb5dbb446a004c8472be39ec2ce
@@ -1,6 +1,8 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
3
  require "elibri_onix_generator/version"
4
+ require "elibri_onix_generator/model/product"
5
+ require "elibri_onix_generator/model/contributor"
4
6
 
5
7
  Gem::Specification.new do |s|
6
8
  s.name = "elibri_onix_generator"
@@ -0,0 +1,21 @@
1
+ module Elibri
2
+ module ONIX
3
+ module Model
4
+
5
+ class Contributor
6
+
7
+ attr_accessor :role_onix_code, :name, :last_name, :language_onix_code, :full_name
8
+
9
+ def initialize(attributes = {})
10
+ attributes.each do |key, value|
11
+ self.send("#{key}=", value)
12
+ end
13
+ end
14
+
15
+ def generated_full_name
16
+ full_name || "#{name} #{last_name}".strip
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,132 @@
1
+ require 'elibri_onix_generator'
2
+
3
+ module Elibri
4
+ module ONIX
5
+ module Model
6
+
7
+ class Product
8
+
9
+ class OnixGenerator
10
+ include Elibri::ONIX::Generator
11
+ end
12
+
13
+
14
+ attr_accessor :product_form_onix_code, :publisher_name, :record_reference, :isbn_value,
15
+ :authorship_kind, :edition_statement, :thema_codes, :publishing_status_onix_code,
16
+ :publication_day, :publication_month, :publication_year, :cover_url, :notification_type_onix_code,
17
+ :collection_name, :collection_part, :title, :subtitle, :title_part, :original_title, :trade_title,
18
+ :description, :contributors, :height, :width, :thickness, :weight, :number_of_illustrations, :number_of_pages,
19
+ :cover_type_name, :price_amount, :series_name, :vat, :pkwiu
20
+
21
+ def to_xml
22
+ OnixGenerator.new(self, {}).to_s
23
+ end
24
+
25
+
26
+ def kind_of_book?
27
+ true
28
+ end
29
+
30
+ def series_membership_kind
31
+ if series_name && series_name.size > 0
32
+ "user_given"
33
+ else
34
+ "no_series"
35
+ end
36
+ end
37
+
38
+ def series_memberships
39
+ if series_name && series_name.size > 0
40
+ [OpenStruct.new(series_name: series_name)]
41
+ else
42
+ []
43
+ end
44
+ end
45
+
46
+ def collection_with_issn
47
+ end
48
+
49
+ def cover_type
50
+ if cover_type_name && cover_type_name.size > 0
51
+ OpenStruct.new(name: cover_type_name)
52
+ end
53
+ end
54
+
55
+ def kind_of_measurable?
56
+ width || height
57
+ end
58
+
59
+
60
+ def title_parts
61
+ res = []
62
+ product_code = Elibri::ONIX::Dict::Release_3_0::TitleElementLevel::PRODUCT #01
63
+ collection_code = Elibri::ONIX::Dict::Release_3_0::TitleElementLevel::COLLECTION #02
64
+ res << OpenStruct.new(:level => collection_code, :title => collection_name, :part => self.collection_part) if collection_name && collection_name.size > 0
65
+ res << OpenStruct.new(:level => product_code, :title => self.title, :subtitle => self.subtitle, :part => self.title_part) if self.title && self.title.size > 0
66
+ return res
67
+ end
68
+
69
+
70
+ def other_texts
71
+ if self.description && self.description.size > 0
72
+ [OpenStruct.new({ :text => description,
73
+ :type_onix_code => "03",
74
+ :exportable? => true})]
75
+ else
76
+ []
77
+ end
78
+ end
79
+
80
+ def attachments
81
+ if cover_url
82
+ [OpenStruct.new({"onix_resource_mode" => "03", "attachment_type_code" => "01",
83
+ "file" => OpenStruct.new({ "url" => cover_url })})]
84
+ else
85
+ []
86
+ end
87
+ end
88
+
89
+
90
+ def notification_type
91
+ OpenStruct.new({"onix_code" => notification_type_onix_code}) if notification_type_onix_code
92
+ end
93
+
94
+ def publication_date_with_onix_format_code
95
+ publication_year_str = self.publication_year ? "%04d"% self.publication_year : nil
96
+ publication_month_str = self.publication_month ? "%02d"% self.publication_month : nil
97
+ publication_day_str = self.publication_day ? "%02d"% self.publication_day : nil
98
+
99
+ publication_date = [publication_year_str, publication_month_str, publication_day_str].compact.join('')
100
+
101
+ if self.publication_year && self.publication_month && self.publication_day
102
+ [publication_year_str + publication_month_str + publication_day_str, Elibri::ONIX::Dict::Release_3_0::DateFormat::YYYYMMDD]
103
+ elsif self.publication_year && self.publication_month
104
+ [publication_year_str + publication_month_str, Elibri::ONIX::Dict::Release_3_0::DateFormat::YYYYMM]
105
+ elsif self.publication_year
106
+ [publication_year_str, Elibri::ONIX::Dict::Release_3_0::DateFormat::YYYY]
107
+ else
108
+ [nil, nil]
109
+ end
110
+ end
111
+
112
+ def public?
113
+ true
114
+ end
115
+
116
+ def publisher_name_for_onix
117
+ publisher_name
118
+ end
119
+
120
+ def thema_codes_for_onix
121
+ thema_codes
122
+ end
123
+
124
+ def initialize(attributes = {})
125
+ attributes.each do |key, value|
126
+ self.send("#{key}=", value)
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
@@ -1,3 +1,3 @@
1
1
  module ElibriOnixGenerator
2
- VERSION = "0.4.3"
2
+ VERSION = "0.4.4"
3
3
  end
@@ -644,8 +644,7 @@ module Elibri
644
644
  end
645
645
  end
646
646
 
647
- if product.respond_to?(:kind_of_book?) && product.respond_to?(:kind_of_ebook?) && product.respond_to?(:number_of_pages) &&
648
- (product.kind_of_book? or product.kind_of_ebook?) && product.number_of_pages #number_of_pages to int
647
+ if field_exists?(product, :number_of_pages)
649
648
  tag(:Extent) do
650
649
  comment 'Liczba stron - tylko dla produktów typu książka', :kind => :onix_extent
651
650
  tag(:ExtentType, Elibri::ONIX::Dict::Release_3_0::ExtentType::PAGE_COUNT)
@@ -653,8 +652,7 @@ module Elibri
653
652
  tag(:ExtentUnit, Elibri::ONIX::Dict::Release_3_0::ExtentUnit::PAGES)
654
653
  end
655
654
  end
656
- if product.respond_to?(:kind_of_book?) && product.respond_to?(:kind_of_ebook?) && product.respond_to?(:number_of_illustrations) &&
657
- (product.kind_of_book? or product.kind_of_ebook?) and product.number_of_illustrations
655
+ if field_exists?(product, :number_of_illustrations)
658
656
  comment 'Liczba ilustracji - tylko dla produktów typu książka', :kind => :onix_extent
659
657
  tag(:NumberOfIllustrations, product.number_of_illustrations)
660
658
  end
@@ -953,7 +951,7 @@ module Elibri
953
951
  # Oprócz nazwy serii może zostać również podany numer wewnątrz serii, jeśli seria jest numerowana.
954
952
  # Książka może należeć do kilku serii, wtedy tag <strong>&lt;Collection&gt;</strong> występuje kilkukrotnie.
955
953
  def export_series_memberships!(product)
956
- if product.respond_to?(:series_membership_kind) && (product.series_membership_kind.user_given? || product.collection_with_issn)
954
+ if product.respond_to?(:series_membership_kind) && (product.series_membership_kind == "user_given" || product.collection_with_issn)
957
955
  (product.series_memberships + [product.collection_with_issn]).compact.each_with_index do |series_membership, idx|
958
956
  tag(:Collection) do
959
957
  comment "Używamy tylko #{Elibri::ONIX::Dict::Release_3_0::CollectionType::PUBLISHER_COLLECTION} - seria wydawnictwa", :kind => :onix_series_memberships
@@ -1094,7 +1092,10 @@ module Elibri
1094
1092
  if @elibri_onix_dialect >= '3.0.1'
1095
1093
 
1096
1094
  if field_exists?(product, :cover_type)
1097
- comment_dictionary "Format okładki", Product::CoverType.all.map(&:name), :indent => 10
1095
+ begin
1096
+ comment_dictionary "Format okładki", Product::CoverType.all.map(&:name), :indent => 10
1097
+ rescue NameError
1098
+ end
1098
1099
  tag("elibri:CoverType", product.cover_type.name)
1099
1100
  end
1100
1101
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elibri_onix_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin Urbański
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-09-21 00:00:00.000000000 Z
12
+ date: 2018-09-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: builder
@@ -53,6 +53,8 @@ files:
53
53
  - Rakefile
54
54
  - elibri_onix_generator.gemspec
55
55
  - lib/elibri_onix_generator.rb
56
+ - lib/elibri_onix_generator/model/contributor.rb
57
+ - lib/elibri_onix_generator/model/product.rb
56
58
  - lib/elibri_onix_generator/version.rb
57
59
  homepage: ''
58
60
  licenses: []