fb2rb 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dfb4528624a4eb3be4782bc3a3affe44cee7a9ba88f2123ae83a0a8cd4791455
4
- data.tar.gz: 6221bfe28e99a59b82f87c7957213ad24c1befa6f6b2460173aa56da3fd8f400
3
+ metadata.gz: 3232aa66bba2be36e9f72b67c198a6b2e1b8e13d2cb51746264b44daaab9c60e
4
+ data.tar.gz: 00c679822965363b7ffade747f1898f9d5a687c408cab6240afa8ac150108593
5
5
  SHA512:
6
- metadata.gz: b019fe1a3f27dc0d64e909a5f0655ca154e9c3addc6f38f2ea3716dc7eee19798604e54045d2ef94844ed0f495d33fa5ffa8d6db13a3065182dc7aa30fabd5e0
7
- data.tar.gz: c7840ad4f5bb5cc4feb2c878f862c993db3fa842eb3be1013e17b6fb14ea7182e3818a487fb260c1c9a7541f90f0b791fad9afc919cc24eacd2b60d1bfc5fea5
6
+ metadata.gz: 7684b0249c15f2ca45fd209df32b6dae4f52192d0aa2cf17fff9c63c83666bbec7c1c7aafc5c4055e87a13f2967113056a81d94c5bc490448897a61f73695255
7
+ data.tar.gz: 9e93f45e0567bac65cdf97b9c18d2912b869d5a605d228e1bf667e58739a915a092d5623b6b385fe844817e337457444bca74580ebdb9bcd5720dcaef6af304a
@@ -13,12 +13,6 @@ jobs:
13
13
  with:
14
14
  ruby-version: 2.7
15
15
  - name: Publish to RubyGems.org
16
- run: |
17
- mkdir -p $HOME/.gem
18
- touch $HOME/.gem/credentials
19
- chmod 0600 $HOME/.gem/credentials
20
- printf -- "---\n:rubygems_api_key: ${RUBYGEMS_API_KEY}\n" > $HOME/.gem/credentials
21
- gem build *.gemspec
22
- gem push *.gem
23
- env:
24
- RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
16
+ uses: dawidd6/action-publish-gem@v1
17
+ with:
18
+ api_key: ${{ secrets.RUBYGEMS_API_KEY }}
@@ -7,6 +7,11 @@
7
7
  This document provides a high-level view of the changes to the {project-name} by release.
8
8
  For a detailed view of what has changed, refer to the {uri-project}/commits/master[commit history] on GitHub.
9
9
 
10
+ == 0.5.0 (2020-12-07) - @slonopotamus
11
+
12
+ * return `nil` from `FB2rb::Book.read_compressed` for empty ZIP files
13
+ * **breaking change**: switch to named parameters instead of optional
14
+
10
15
  == 0.4.0 (2020-11-24) - @slonopotamus
11
16
 
12
17
  * add `Book::add_stylesheet` method
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
 
24
24
  s.add_development_dependency 'rake', '~> 13.0.0'
25
25
  s.add_development_dependency 'rspec', '~> 3.10.0'
26
- s.add_development_dependency 'rubocop', '~> 0.93.0'
27
- s.add_development_dependency 'rubocop-rspec', '~> 1.44.0'
26
+ s.add_development_dependency 'rubocop', '~> 1.5.0'
27
+ s.add_development_dependency 'rubocop-rake', '~> 0.5.0'
28
+ s.add_development_dependency 'rubocop-rspec', '~> 2.0.0'
28
29
  end
@@ -22,7 +22,7 @@ module FB2rb
22
22
  # @return [Array<FB2fb::Binary>]
23
23
  attr_accessor(:binaries)
24
24
 
25
- def initialize(description = Description.new, bodies = [], binaries = [], stylesheets = [])
25
+ def initialize(description: Description.new, bodies: [], binaries: [], stylesheets: [])
26
26
  @binaries = binaries
27
27
  @bodies = bodies
28
28
  @description = description
@@ -43,6 +43,7 @@ module FB2rb
43
43
  return parse(xml, fb2_prefix, xlink_prefix)
44
44
  end
45
45
  end
46
+ nil
46
47
  end
47
48
 
48
49
  # Reads existing uncompressed FB2 file from an IO object, and creates new Book object.
@@ -64,16 +65,16 @@ module FB2rb
64
65
  # @return [FB2rb::Book]
65
66
  def parse(xml, fb2_prefix, xlink_prefix) # rubocop:disable Metrics/MethodLength
66
67
  Book.new(
67
- Description.parse(
68
+ description: Description.parse(
68
69
  xml.xpath("/#{fb2_prefix}:FictionBook/#{fb2_prefix}:description"), fb2_prefix, xlink_prefix
69
70
  ),
70
- xml.xpath("/#{fb2_prefix}:FictionBook/#{fb2_prefix}:body").map do |node|
71
+ bodies: xml.xpath("/#{fb2_prefix}:FictionBook/#{fb2_prefix}:body").map do |node|
71
72
  Body.parse(node)
72
73
  end,
73
- xml.xpath("#{fb2_prefix}:FictionBook/#{fb2_prefix}:binary").map do |node|
74
+ binaries: xml.xpath("#{fb2_prefix}:FictionBook/#{fb2_prefix}:binary").map do |node|
74
75
  Binary.parse(node)
75
76
  end,
76
- xml.xpath("/#{fb2_prefix}:FictionBook/#{fb2_prefix}:stylesheet").map do |node|
77
+ stylesheets: xml.xpath("/#{fb2_prefix}:FictionBook/#{fb2_prefix}:stylesheet").map do |node|
77
78
  Stylesheet.parse(node)
78
79
  end
79
80
  )
@@ -106,12 +107,12 @@ module FB2rb
106
107
  end
107
108
  end
108
109
 
109
- def add_binary(name, filename_or_io, content_type = nil)
110
+ def add_binary(id, filename_or_io, content_type = nil)
110
111
  if filename_or_io.respond_to?(:read)
111
- add_binary_io name, filename_or_io, content_type
112
+ add_binary_io id, filename_or_io, content_type
112
113
  else
113
114
  File.open(filename_or_io, 'r') do |io|
114
- add_binary_io name, io, content_type
115
+ add_binary_io id, io, content_type
115
116
  end
116
117
  end
117
118
  end
@@ -169,17 +170,17 @@ module FB2rb
169
170
  write_uncompressed(zos)
170
171
  end
171
172
 
172
- def add_binary_io(name, io, content_type = nil)
173
+ def add_binary_io(id, io, content_type = nil)
173
174
  io.binmode
174
175
  content = io.read
175
- @binaries << Binary.new(name, content, content_type)
176
+ @binaries << Binary.new(id: id, content: content, content_type: content_type)
176
177
  self
177
178
  end
178
179
 
179
180
  def add_stylesheet_io(content_type, io)
180
181
  io.binmode
181
182
  content = io.read
182
- @stylesheets << Stylesheet.new(content_type, content)
183
+ @stylesheets << Stylesheet.new(content_type: content_type, content: content)
183
184
  self
184
185
  end
185
186
  end
@@ -196,13 +197,14 @@ module FB2rb
196
197
  attr_accessor(:publish_info)
197
198
  # @return [Array<FB2rb::CustomInfo>]
198
199
  attr_accessor(:custom_infos)
200
+
199
201
  # TODO: <output>
200
202
 
201
- def initialize(title_info = TitleInfo.new,
202
- document_info = DocumentInfo.new,
203
- publish_info = nil,
204
- src_title_info = nil,
205
- custom_infos = [])
203
+ def initialize(title_info: TitleInfo.new,
204
+ document_info: DocumentInfo.new,
205
+ publish_info: nil,
206
+ src_title_info: nil,
207
+ custom_infos: [])
206
208
  @title_info = title_info
207
209
  @document_info = document_info
208
210
  @publish_info = publish_info
@@ -215,11 +217,11 @@ module FB2rb
215
217
  publish_info_xml = xml.at("./#{fb2_prefix}:publish-info")
216
218
  src_title_info_xml = xml.at("./#{fb2_prefix}:src-title-info")
217
219
  Description.new(
218
- TitleInfo.parse(xml.at("./#{fb2_prefix}:title-info"), fb2_prefix, xlink_prefix),
219
- DocumentInfo.parse(xml.at("./#{fb2_prefix}:document-info"), fb2_prefix),
220
- publish_info_xml.nil? ? nil : PublishInfo.parse(publish_info_xml, fb2_prefix),
221
- src_title_info_xml.nil? ? nil : TitleInfo.parse(src_title_info_xml, fb2_prefix, xlink_prefix),
222
- xml.xpath("./#{fb2_prefix}:custom-info").map do |node|
220
+ title_info: TitleInfo.parse(xml.at("./#{fb2_prefix}:title-info"), fb2_prefix, xlink_prefix),
221
+ document_info: DocumentInfo.parse(xml.at("./#{fb2_prefix}:document-info"), fb2_prefix),
222
+ publish_info: publish_info_xml.nil? ? nil : PublishInfo.parse(publish_info_xml, fb2_prefix),
223
+ src_title_info: src_title_info_xml.nil? ? nil : TitleInfo.parse(src_title_info_xml, fb2_prefix, xlink_prefix),
224
+ custom_infos: xml.xpath("./#{fb2_prefix}:custom-info").map do |node|
223
225
  CustomInfo.parse(node)
224
226
  end
225
227
  )
@@ -241,47 +243,47 @@ module FB2rb
241
243
  # Holds <stylesheet> data
242
244
  class Stylesheet
243
245
  # @return [String]
244
- attr_accessor(:type)
246
+ attr_accessor(:content_type)
245
247
  # @return [String, nil]
246
248
  attr_accessor(:content)
247
249
 
248
- def initialize(type = '', content = nil)
249
- @type = type
250
+ def initialize(content_type: '', content: nil)
251
+ @content_type = content_type
250
252
  @content = content
251
253
  end
252
254
 
253
255
  def self.parse(xml)
254
- Stylesheet.new(xml['type'], xml.text)
256
+ Stylesheet.new(content_type: xml['type'], content: xml.text)
255
257
  end
256
258
 
257
259
  def to_xml(xml)
258
260
  return if @content.nil?
259
261
 
260
- xml.send('stylesheet', @content, 'type' => @type)
262
+ xml.send('stylesheet', @content, 'type' => @content_type)
261
263
  end
262
264
  end
263
265
 
264
266
  # Holds <custom-info> data
265
267
  class CustomInfo
266
268
  # @return [String]
267
- attr_accessor(:info_type)
269
+ attr_accessor(:type)
268
270
  # @return [String, nil]
269
271
  attr_accessor(:content)
270
272
 
271
- def initialize(info_type = '', content = nil)
272
- @info_type = info_type
273
+ def initialize(type: '', content: nil)
274
+ @type = type
273
275
  @content = content
274
276
  end
275
277
 
276
278
  # @return [FB2rb::CustomInfo]
277
279
  def self.parse(xml)
278
- CustomInfo.new(xml['info-type'], xml.text)
280
+ CustomInfo.new(type: xml['info-type'], content: xml.text)
279
281
  end
280
282
 
281
283
  def to_xml(xml)
282
284
  return if @content.nil?
283
285
 
284
- xml.send('custom-info', @content, 'info-type' => @info_type)
286
+ xml.send('custom-info', @content, 'info-type' => @type)
285
287
  end
286
288
  end
287
289
 
@@ -300,12 +302,12 @@ module FB2rb
300
302
  # @return [Array<FB2RB::Sequence>]
301
303
  attr_accessor(:sequences)
302
304
 
303
- def initialize(book_name = nil, # rubocop:disable Metrics/ParameterLists
304
- publisher = nil,
305
- city = nil,
306
- year = nil,
307
- isbn = nil,
308
- sequences = [])
305
+ def initialize(book_name: nil, # rubocop:disable Metrics/ParameterLists
306
+ publisher: nil,
307
+ city: nil,
308
+ year: nil,
309
+ isbn: nil,
310
+ sequences: [])
309
311
  @book_name = book_name
310
312
  @publisher = publisher
311
313
  @city = city
@@ -317,12 +319,12 @@ module FB2rb
317
319
  # @return [FB2RB::PublishInfo]
318
320
  def self.parse(xml, fb2_prefix)
319
321
  PublishInfo.new(
320
- xml.at("./#{fb2_prefix}:book-name/text()")&.text,
321
- xml.at("./#{fb2_prefix}:publisher/text()")&.text,
322
- xml.at("./#{fb2_prefix}:city/text()")&.text,
323
- xml.at("./#{fb2_prefix}:year/text()")&.text,
324
- xml.at("./#{fb2_prefix}:isbn/text()")&.text,
325
- xml.xpath("./#{fb2_prefix}:sequence").map do |node|
322
+ book_name: xml.at("./#{fb2_prefix}:book-name/text()")&.text,
323
+ publisher: xml.at("./#{fb2_prefix}:publisher/text()")&.text,
324
+ city: xml.at("./#{fb2_prefix}:city/text()")&.text,
325
+ year: xml.at("./#{fb2_prefix}:year/text()")&.text,
326
+ isbn: xml.at("./#{fb2_prefix}:isbn/text()")&.text,
327
+ sequences: xml.xpath("./#{fb2_prefix}:sequence").map do |node|
326
328
  Sequence.parse(node)
327
329
  end
328
330
  )
@@ -363,15 +365,15 @@ module FB2rb
363
365
  # @return [Array<String>]
364
366
  attr_accessor(:publishers)
365
367
 
366
- def initialize(authors = [], # rubocop:disable Metrics/ParameterLists
367
- program_used = nil,
368
- date = FB2Date.new,
369
- src_urls = [],
370
- src_ocr = nil,
371
- id = '',
372
- version = '',
373
- history = nil,
374
- publishers = [])
368
+ def initialize(authors: [], # rubocop:disable Metrics/ParameterLists
369
+ program_used: nil,
370
+ date: FB2Date.new,
371
+ src_urls: [],
372
+ src_ocr: nil,
373
+ id: '',
374
+ version: '',
375
+ history: nil,
376
+ publishers: [])
375
377
  @authors = authors
376
378
  @program_used = program_used
377
379
  @date = date
@@ -387,17 +389,17 @@ module FB2rb
387
389
  def self.parse(xml, fb2_prefix) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
388
390
  date = xml.at("./#{fb2_prefix}:date")
389
391
  DocumentInfo.new(
390
- xml.xpath("./#{fb2_prefix}:author").map do |node|
392
+ authors: xml.xpath("./#{fb2_prefix}:author").map do |node|
391
393
  Author.parse(node, fb2_prefix)
392
394
  end,
393
- xml.at("./#{fb2_prefix}:program-used")&.text,
394
- date.nil? ? FB2Date.new : FB2Date.parse(date),
395
- xml.xpath("./#{fb2_prefix}:src-url").map(&:text),
396
- xml.at("./#{fb2_prefix}:src-ocr")&.text,
397
- xml.at("./#{fb2_prefix}:id").text,
398
- xml.at("./#{fb2_prefix}:version")&.text,
399
- xml.at("./#{fb2_prefix}:history")&.children&.to_s&.strip,
400
- xml.xpath("./#{fb2_prefix}:publisher").map(&:text)
395
+ program_used: xml.at("./#{fb2_prefix}:program-used")&.text,
396
+ date: date.nil? ? FB2Date.new : FB2Date.parse(date),
397
+ src_urls: xml.xpath("./#{fb2_prefix}:src-url").map(&:text),
398
+ src_ocr: xml.at("./#{fb2_prefix}:src-ocr")&.text,
399
+ id: xml.at("./#{fb2_prefix}:id").text,
400
+ version: xml.at("./#{fb2_prefix}:version")&.text,
401
+ history: xml.at("./#{fb2_prefix}:history")&.children&.to_s&.strip,
402
+ publishers: xml.xpath("./#{fb2_prefix}:publisher").map(&:text)
401
403
  )
402
404
  end
403
405
 
@@ -451,17 +453,17 @@ module FB2rb
451
453
  # @return [Array<FB2rb::Sequence>]
452
454
  attr_accessor(:sequences)
453
455
 
454
- def initialize(genres = [], # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
455
- authors = [],
456
- book_title = '',
457
- annotation = nil,
458
- keywords = [],
459
- date = nil,
460
- coverpage = nil,
461
- lang = 'en',
462
- src_lang = nil,
463
- translators = [],
464
- sequences = [])
456
+ def initialize(genres: [], # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
457
+ authors: [],
458
+ book_title: '',
459
+ annotation: nil,
460
+ keywords: [],
461
+ date: nil,
462
+ coverpage: nil,
463
+ lang: 'en',
464
+ src_lang: nil,
465
+ translators: [],
466
+ sequences: [])
465
467
  @genres = genres
466
468
  @authors = authors
467
469
  @book_title = book_title
@@ -480,21 +482,21 @@ module FB2rb
480
482
  date = xml.at("./#{fb2_prefix}:date")
481
483
  coverpage = xml.at("./#{fb2_prefix}:coverpage")
482
484
  TitleInfo.new(
483
- xml.xpath("./#{fb2_prefix}:genre/text()").map(&:text),
484
- xml.xpath("./#{fb2_prefix}:author").map do |node|
485
+ genres: xml.xpath("./#{fb2_prefix}:genre/text()").map(&:text),
486
+ authors: xml.xpath("./#{fb2_prefix}:author").map do |node|
485
487
  Author.parse(node, fb2_prefix)
486
488
  end,
487
- xml.at("./#{fb2_prefix}:book-title/text()")&.text,
488
- xml.at("./#{fb2_prefix}:annotation")&.children.to_s.strip,
489
- xml.at("./#{fb2_prefix}:keywords/text()")&.text&.split(', ') || [],
490
- date.nil? ? nil : FB2Date.parse(date),
491
- coverpage.nil? ? nil : Coverpage.parse(coverpage, fb2_prefix, xlink_prefix),
492
- xml.at("./#{fb2_prefix}:lang/text()").text,
493
- xml.at("./#{fb2_prefix}:src-lang/text()")&.text,
494
- xml.xpath("./#{fb2_prefix}:translator").map do |node|
489
+ book_title: xml.at("./#{fb2_prefix}:book-title/text()")&.text,
490
+ annotation: xml.at("./#{fb2_prefix}:annotation")&.children.to_s.strip,
491
+ keywords: xml.at("./#{fb2_prefix}:keywords/text()")&.text&.split(', ') || [],
492
+ date: date.nil? ? nil : FB2Date.parse(date),
493
+ coverpage: coverpage.nil? ? nil : Coverpage.parse(coverpage, fb2_prefix, xlink_prefix),
494
+ lang: xml.at("./#{fb2_prefix}:lang/text()").text,
495
+ src_lang: xml.at("./#{fb2_prefix}:src-lang/text()")&.text,
496
+ translators: xml.xpath("./#{fb2_prefix}:translator").map do |node|
495
497
  Author.parse(node, fb2_prefix)
496
498
  end,
497
- xml.xpath("./#{fb2_prefix}:sequence").map do |node|
499
+ sequences: xml.xpath("./#{fb2_prefix}:sequence").map do |node|
498
500
  Sequence.parse(node)
499
501
  end
500
502
  )
@@ -534,13 +536,13 @@ module FB2rb
534
536
  # @return [Array<String>]
535
537
  attr_accessor(:images)
536
538
 
537
- def initialize(images = [])
539
+ def initialize(images: [])
538
540
  @images = images
539
541
  end
540
542
 
541
543
  def self.parse(xml, fb2_prefix, xlink_prefix)
542
544
  Coverpage.new(
543
- xml.xpath("./#{fb2_prefix}:image/@#{xlink_prefix}:href").map(&:to_s)
545
+ images: xml.xpath("./#{fb2_prefix}:image/@#{xlink_prefix}:href").map(&:to_s)
544
546
  )
545
547
  end
546
548
 
@@ -560,7 +562,7 @@ module FB2rb
560
562
  # @return [Date, nil]
561
563
  attr_accessor(:value)
562
564
 
563
- def initialize(display_value = '', value = nil)
565
+ def initialize(display_value: '', value: nil)
564
566
  @display_value = display_value
565
567
  @value = value
566
568
  end
@@ -568,8 +570,8 @@ module FB2rb
568
570
  def self.parse(xml)
569
571
  value = xml['value']
570
572
  FB2Date.new(
571
- xml.at('./text()')&.text || '',
572
- value.nil? ? nil : Date.parse(value)
573
+ display_value: xml.at('./text()')&.text || '',
574
+ value: value.nil? ? nil : Date.parse(value)
573
575
  )
574
576
  end
575
577
 
@@ -587,14 +589,14 @@ module FB2rb
587
589
  # @return [Integer, nil]
588
590
  attr_accessor(:number)
589
591
 
590
- def initialize(name = '', number = nil)
592
+ def initialize(name: '', number: nil)
591
593
  @name = name
592
594
  @number = number
593
595
  end
594
596
 
595
597
  # @return [FB2rb::Sequence]
596
598
  def self.parse(xml)
597
- Sequence.new(xml['name'], xml['number']&.to_i)
599
+ Sequence.new(name: xml['name'], number: xml['number']&.to_i)
598
600
  end
599
601
 
600
602
  def to_xml(xml)
@@ -621,13 +623,13 @@ module FB2rb
621
623
  # @return [String, nil]
622
624
  attr_accessor(:id)
623
625
 
624
- def initialize(first_name = nil, # rubocop:disable Metrics/ParameterLists
625
- middle_name = nil,
626
- last_name = nil,
627
- nickname = nil,
628
- home_pages = [],
629
- emails = [],
630
- id = nil)
626
+ def initialize(first_name: nil, # rubocop:disable Metrics/ParameterLists
627
+ middle_name: nil,
628
+ last_name: nil,
629
+ nickname: nil,
630
+ home_pages: [],
631
+ emails: [],
632
+ id: nil)
631
633
  @first_name = first_name
632
634
  @middle_name = middle_name
633
635
  @last_name = last_name
@@ -640,13 +642,13 @@ module FB2rb
640
642
  # @return [FB2rb::Author]
641
643
  def self.parse(xml, fb2_prefix) # rubocop:disable Metrics/CyclomaticComplexity
642
644
  Author.new(
643
- xml.at("./#{fb2_prefix}:first-name/text()")&.text,
644
- xml.at("./#{fb2_prefix}:middle-name/text()")&.text,
645
- xml.at("./#{fb2_prefix}:last-name/text()")&.text,
646
- xml.at("./#{fb2_prefix}:nickname/text()")&.text,
647
- xml.xpath("./#{fb2_prefix}:home-page/text()").map(&:text),
648
- xml.xpath("./#{fb2_prefix}:email/text()").map(&:text),
649
- xml.at("./#{fb2_prefix}:id/text()")&.text
645
+ first_name: xml.at("./#{fb2_prefix}:first-name/text()")&.text,
646
+ middle_name: xml.at("./#{fb2_prefix}:middle-name/text()")&.text,
647
+ last_name: xml.at("./#{fb2_prefix}:last-name/text()")&.text,
648
+ nickname: xml.at("./#{fb2_prefix}:nickname/text()")&.text,
649
+ home_pages: xml.xpath("./#{fb2_prefix}:home-page/text()").map(&:text),
650
+ emails: xml.xpath("./#{fb2_prefix}:email/text()").map(&:text),
651
+ id: xml.at("./#{fb2_prefix}:id/text()")&.text
650
652
  )
651
653
  end
652
654
 
@@ -674,7 +676,7 @@ module FB2rb
674
676
  # @return [String]
675
677
  attr_accessor(:content)
676
678
 
677
- def initialize(name = nil, content = '')
679
+ def initialize(name: nil, content: '')
678
680
  @name = name
679
681
  @content = content
680
682
  end
@@ -682,8 +684,8 @@ module FB2rb
682
684
  # @return [FB2rb::Body]
683
685
  def self.parse(xml)
684
686
  Body.new(
685
- xml['name'],
686
- xml.children.to_s.strip
687
+ name: xml['name'],
688
+ content: xml.children.to_s.strip
687
689
  )
688
690
  end
689
691
 
@@ -706,7 +708,7 @@ module FB2rb
706
708
  # @return [String, nil]
707
709
  attr_accessor(:content_type)
708
710
 
709
- def initialize(id, content, content_type = nil)
711
+ def initialize(id: nil, content: ''.b, content_type: nil)
710
712
  @id = id
711
713
  @content = content
712
714
  @content_type = content_type
@@ -714,7 +716,7 @@ module FB2rb
714
716
 
715
717
  def self.parse(xml)
716
718
  decoded = Base64.decode64(xml.text)
717
- Binary.new(xml['id'], decoded, xml['content-type'])
719
+ Binary.new(id: xml['id'], content: decoded, content_type: xml['content-type'])
718
720
  end
719
721
 
720
722
  def to_xml(xml)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FB2rb
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fb2rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marat Radchenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-24 00:00:00.000000000 Z
11
+ date: 2020-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -72,28 +72,42 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.93.0
75
+ version: 1.5.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.93.0
82
+ version: 1.5.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.5.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.5.0
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rubocop-rspec
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 1.44.0
103
+ version: 2.0.0
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 1.44.0
110
+ version: 2.0.0
97
111
  description:
98
112
  email:
99
113
  - marat@slonopotamus.org