atomutil 0.1.4 → 0.1.5

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
- SHA1:
3
- metadata.gz: c5e5092a293b758eebec1ed5bf93a970d0a42302
4
- data.tar.gz: d6136b8ed4dd134a1e61229b2dfb96ec2bedf66c
2
+ SHA256:
3
+ metadata.gz: 6caef9b5e4041251ca11a21315b28a321595a0e71bc3a97d431717cb47c19f29
4
+ data.tar.gz: 5f099d23a860ca5b7c8e8cef3945a4f9c2a4dababf37d0c4efc366a4c15da103
5
5
  SHA512:
6
- metadata.gz: bf09b9e297e8db93abff0c1e4570eacdef522f2db65b53380f0399e57c20d55bcb6379796313582d76bac44102fed8fa878ce8c66db4832e85de586727694063
7
- data.tar.gz: 42b0ec28835f1fcd05e346e3d8afec257556eefc457d4fc0cffbc95b6e94b1bb083ae22d574ea94c1c29c4a31a3d3aa5e32aa76b0954057a77558daa17ca4a0f
6
+ metadata.gz: 5cdcb74f7433581eab266e6cb3d37d4e996dd27955912b3275164d2afb51cae65f6805440714b111ea1c1b569cfca4da54d2b3bc295578b66fb4a5f49fac5bf7
7
+ data.tar.gz: 88e25859ee8e8f26f87e3dd34fae92e61f8690508f70c69b8154d55fbe6a141fb528e439da06f3769abf01c6a88b1c5233719de9c9c01d5641c95f68cbc930da
@@ -0,0 +1,10 @@
1
+ # Change Log
2
+
3
+ ## [0.1.5] - 2018/09/05
4
+
5
+ ### CHANGED
6
+
7
+ Fixed 2 issues, thanks to rnanba.
8
+
9
+ - https://github.com/lyokato/ruby-atomutil/issues/2
10
+ - https://github.com/lyokato/ruby-atomutil/issues/3
data/Gemfile CHANGED
@@ -7,7 +7,8 @@ source "http://rubygems.org"
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
9
  gem "rspec", "~> 2.4.0"
10
- gem "bundler", "~> 1.0.0"
11
- gem "jeweler", "~> 1.5.2"
12
- gem "rcov", ">= 0"
10
+ gem "bundler", "~> 1.16.1"
11
+ gem "jeweler", "~> 2.3.9"
13
12
  end
13
+
14
+ gem 'rake', '< 11.0'
@@ -1,14 +1,52 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ addressable (2.4.0)
5
+ builder (3.2.3)
6
+ descendants_tracker (0.0.4)
7
+ thread_safe (~> 0.3, >= 0.3.1)
4
8
  diff-lcs (1.1.2)
5
- git (1.2.5)
6
- jeweler (1.5.2)
7
- bundler (~> 1.0.0)
9
+ faraday (0.9.2)
10
+ multipart-post (>= 1.2, < 3)
11
+ git (1.5.0)
12
+ github_api (0.16.0)
13
+ addressable (~> 2.4.0)
14
+ descendants_tracker (~> 0.0.4)
15
+ faraday (~> 0.8, < 0.10)
16
+ hashie (>= 3.4)
17
+ mime-types (>= 1.16, < 3.0)
18
+ oauth2 (~> 1.0)
19
+ hashie (3.6.0)
20
+ highline (2.0.0)
21
+ jeweler (2.3.9)
22
+ builder
23
+ bundler
8
24
  git (>= 1.2.5)
25
+ github_api (~> 0.16.0)
26
+ highline (>= 1.6.15)
27
+ nokogiri (>= 1.5.10)
28
+ psych
9
29
  rake
10
- rake (0.9.2)
11
- rcov (0.9.9)
30
+ rdoc
31
+ semver2
32
+ jwt (1.5.6)
33
+ mime-types (2.99.3)
34
+ mini_portile2 (2.3.0)
35
+ multi_json (1.13.1)
36
+ multi_xml (0.6.0)
37
+ multipart-post (2.0.0)
38
+ nokogiri (1.8.4)
39
+ mini_portile2 (~> 2.3.0)
40
+ oauth2 (1.4.0)
41
+ faraday (>= 0.8, < 0.13)
42
+ jwt (~> 1.0)
43
+ multi_json (~> 1.3)
44
+ multi_xml (~> 0.5)
45
+ rack (>= 1.2, < 3)
46
+ psych (3.0.2)
47
+ rack (2.0.5)
48
+ rake (10.5.0)
49
+ rdoc (6.0.4)
12
50
  rspec (2.4.0)
13
51
  rspec-core (~> 2.4.0)
14
52
  rspec-expectations (~> 2.4.0)
@@ -17,12 +55,17 @@ GEM
17
55
  rspec-expectations (2.4.0)
18
56
  diff-lcs (~> 1.1.2)
19
57
  rspec-mocks (2.4.0)
58
+ semver2 (3.4.2)
59
+ thread_safe (0.3.6)
20
60
 
21
61
  PLATFORMS
22
62
  ruby
23
63
 
24
64
  DEPENDENCIES
25
- bundler (~> 1.0.0)
26
- jeweler (~> 1.5.2)
27
- rcov
65
+ bundler (~> 1.16.1)
66
+ jeweler (~> 2.3.9)
67
+ rake (< 11.0)
28
68
  rspec (~> 2.4.0)
69
+
70
+ BUNDLED WITH
71
+ 1.16.1
data/Rakefile CHANGED
@@ -32,15 +32,10 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
32
32
  spec.pattern = FileList['spec/**/*_spec.rb']
33
33
  end
34
34
 
35
- RSpec::Core::RakeTask.new(:rcov) do |spec|
36
- spec.pattern = 'spec/**/*_spec.rb'
37
- spec.rcov = true
38
- end
39
-
40
35
  task :default => :spec
41
36
 
42
- require 'rake/rdoctask'
43
- Rake::RDocTask.new do |rdoc|
37
+ require 'rdoc/task'
38
+ RDoc::Task.new do |rdoc|
44
39
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
45
40
 
46
41
  rdoc.rdoc_dir = 'rdoc'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -2,22 +2,25 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: atomutil 0.1.5 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
- s.name = "atomutil"
8
- s.version = "0.1.4"
8
+ s.name = "atomutil".freeze
9
+ s.version = "0.1.5"
9
10
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["lyokato"]
12
- s.date = "2011-09-29"
13
- s.description = "This library allows your to handle AtomPub and Atom Feed easily"
14
- s.email = "lyo.kato@gmail.com"
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["lyokato".freeze]
14
+ s.date = "2018-09-04"
15
+ s.description = "This library allows your to handle AtomPub and Atom Feed easily".freeze
16
+ s.email = "lyo.kato@gmail.com".freeze
15
17
  s.extra_rdoc_files = [
16
18
  "README.rdoc"
17
19
  ]
18
20
  s.files = [
19
21
  ".document",
20
22
  ".rspec",
23
+ "CHANGELOG.md",
21
24
  "Gemfile",
22
25
  "Gemfile.lock",
23
26
  "License.txt",
@@ -40,44 +43,30 @@ Gem::Specification.new do |s|
40
43
  "spec/spec_helper.rb",
41
44
  "spec/threading_spec.rb"
42
45
  ]
43
- s.homepage = "http://github.com/lyokato/ruby-atomutil"
44
- s.licenses = ["MIT"]
45
- s.require_paths = ["lib"]
46
- s.rubygems_version = "1.8.10"
47
- s.summary = "Ruby AtomPub Client"
48
- s.test_files = [
49
- "spec/categories_spec.rb",
50
- "spec/category_spec.rb",
51
- "spec/content_spec.rb",
52
- "spec/customfeed_spec.rb",
53
- "spec/feed_spec.rb",
54
- "spec/link_spec.rb",
55
- "spec/namespace_spec.rb",
56
- "spec/opensearch_spec.rb",
57
- "spec/person_spec.rb",
58
- "spec/spec_helper.rb",
59
- "spec/threading_spec.rb"
60
- ]
46
+ s.homepage = "http://github.com/lyokato/ruby-atomutil".freeze
47
+ s.licenses = ["MIT".freeze]
48
+ s.rubygems_version = "2.7.6".freeze
49
+ s.summary = "Ruby AtomPub Client".freeze
61
50
 
62
51
  if s.respond_to? :specification_version then
63
- s.specification_version = 3
52
+ s.specification_version = 4
64
53
 
65
54
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
66
- s.add_development_dependency(%q<rspec>, ["~> 2.4.0"])
67
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
68
- s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
69
- s.add_development_dependency(%q<rcov>, [">= 0"])
55
+ s.add_runtime_dependency(%q<rake>.freeze, ["< 11.0"])
56
+ s.add_development_dependency(%q<rspec>.freeze, ["~> 2.4.0"])
57
+ s.add_development_dependency(%q<bundler>.freeze, ["~> 1.16.1"])
58
+ s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3.9"])
70
59
  else
71
- s.add_dependency(%q<rspec>, ["~> 2.4.0"])
72
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
73
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
74
- s.add_dependency(%q<rcov>, [">= 0"])
60
+ s.add_dependency(%q<rake>.freeze, ["< 11.0"])
61
+ s.add_dependency(%q<rspec>.freeze, ["~> 2.4.0"])
62
+ s.add_dependency(%q<bundler>.freeze, ["~> 1.16.1"])
63
+ s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.9"])
75
64
  end
76
65
  else
77
- s.add_dependency(%q<rspec>, ["~> 2.4.0"])
78
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
79
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
80
- s.add_dependency(%q<rcov>, [">= 0"])
66
+ s.add_dependency(%q<rake>.freeze, ["< 11.0"])
67
+ s.add_dependency(%q<rspec>.freeze, ["~> 2.4.0"])
68
+ s.add_dependency(%q<bundler>.freeze, ["~> 1.16.1"])
69
+ s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.9"])
81
70
  end
82
71
  end
83
72
 
@@ -1,24 +1,24 @@
1
1
  #--
2
2
  # Copyright (C) 2007 Lyo Kato, <lyo.kato _at_ gmail.com>.
3
3
  #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
11
  #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
  #
23
23
  # This package allows you to handle AtomPub and Atom Syndication Format easily.
24
24
  # This is just a porting for Perl's great libraries, XML::Atom, XML::Atom::Service,
@@ -55,7 +55,7 @@ module AtomUtil
55
55
  module VERSION#:nodoc:
56
56
  MAJOR = 0
57
57
  MINOR = 1
58
- TINY = 4
58
+ TINY = 5
59
59
  STRING = [MAJOR, MINOR, TINY].join('.')
60
60
  end
61
61
  end
@@ -216,7 +216,7 @@ module Atom
216
216
  return false unless value.type == @type
217
217
  return true if value.subtype == '*'
218
218
  return false unless value.subtype == @subtype
219
- return true if value.parameters.nil? || @parameters.nil?
219
+ return true if value.parameters.nil? || @parameters.nil?
220
220
  return value.parameters == @parameters
221
221
  end
222
222
  SERVICE = self.new 'application/atomsvc+xml'
@@ -254,7 +254,7 @@ module Atom
254
254
  @element_ns = nil
255
255
  def self.element_ns(ns=nil)
256
256
  unless ns.nil?
257
- @element_ns = ns.is_a?(Namespace) ? ns : Namespace.new(:uri => ns)
257
+ @element_ns = ns.is_a?(Namespace) ? ns : Namespace.new(:uri => ns)
258
258
  end
259
259
  @element_ns
260
260
  end
@@ -359,7 +359,7 @@ module Atom
359
359
  name.tr!('-', '_')
360
360
  unless moniker.nil?
361
361
  moniker = moniker.to_s
362
- moniker.tr!('-', '_')
362
+ moniker.tr!('-', '_')
363
363
  end
364
364
  elem_ns = element_ns || ns
365
365
  class_eval(<<-EOS, __FILE__, __LINE__)
@@ -396,7 +396,7 @@ module Atom
396
396
  name.tr!('-', '_')
397
397
  unless moniker.nil?
398
398
  moniker = moniker.to_s
399
- moniker.tr!('-', '_')
399
+ moniker.tr!('-', '_')
400
400
  end
401
401
  elem_ns = ext_class.element_ns || ns
402
402
  class_eval(<<-EOS, __FILE__, __LINE__)
@@ -523,7 +523,11 @@ module Atom
523
523
  element.add_attribute a
524
524
  end
525
525
  end
526
- element.text = value.elem.text unless value.elem.text.nil?
526
+ #element.text = value.elem.text unless value.elem.text.nil?
527
+ text = value.elem.get_text
528
+ unless text.nil?
529
+ element.text = REXML::Text.new(text.to_s, true, nil, true)
530
+ end
527
531
  else
528
532
  if value.is_a?(REXML::Element)
529
533
  element.add_element value.deep_clone
@@ -564,7 +568,7 @@ module Atom
564
568
  def get_object(ns, element_name, ext_class)
565
569
  elements = getlist(ns, element_name)
566
570
  return nil if elements.empty?
567
- ext_class.new(:namespace => ns, :elem => elements.first)
571
+ ext_class.new(:namespace => ns, :elem => elements.first)
568
572
  end
569
573
  # Get all indicated elements as an object of the class you passed as thrid argument.
570
574
  #
@@ -576,7 +580,7 @@ module Atom
576
580
  elements = getlist(ns, element_name)
577
581
  return [] if elements.empty?
578
582
  elements.collect do |e|
579
- ext_class.new(:namespace => ns, :elem => e)
583
+ ext_class.new(:namespace => ns, :elem => e)
580
584
  end
581
585
  end
582
586
  # Get attribute value for indicated key
@@ -754,23 +758,8 @@ module Atom
754
758
 
755
759
  def body=(value)
756
760
 
757
- if value =~ Regexp.new("^(?:
758
- [[:print:]]
759
- |[\xc0-\xdf][\x80-\xbf]
760
- |[\xe0-\xef][\x80-\xbf]{2}
761
- |[\xf0-\xf7][\x80-\xbf]{3}
762
- |[\xf8-\xfb][\x80-\xbf]{4}
763
- |[\xfc-\xfd][\x80-\xbf]{5}
764
- )*$", Regexp::EXTENDED, 'n')
765
- #if value =~ /^(?:
766
- # [[:print:]]
767
- # |[\xc0-\xdf][\x80-\xbf]
768
- # |[\xe0-\xef][\x80-\xbf]{2}
769
- # |[\xf0-\xf7][\x80-\xbf]{3}
770
- # |[\xf8-\xfb][\x80-\xbf]{4}
771
- # |[\xfc-\xfd][\x80-\xbf]{5}
772
- # )*$/x
773
- copy = "<div xmlns=\"http://www.w3.org/1999/xhtml\">#{value}</div>"
761
+ if is_utf8?(value)
762
+ copy = "<div xmlns=\"http://www.w3.org/1999/xhtml\">#{value}</div>"
774
763
  is_valid = true
775
764
  begin
776
765
  node = REXML::Document.new(copy).elements[1][0]
@@ -819,6 +808,20 @@ module Atom
819
808
  end
820
809
  @body
821
810
  end
811
+
812
+ private
813
+
814
+ def is_utf8?(str)
815
+ case str.encoding
816
+ when Encoding::UTF_8
817
+ str.valid_encoding?
818
+ when Encoding::ASCII_8BIT, Encoding::US_ASCII
819
+ str.dup.force_encoding(Encoding::UTF_8).valid_encoding?
820
+ else
821
+ false
822
+ end
823
+ end
824
+
822
825
  end
823
826
 
824
827
  class RootElement < Element
@@ -1100,7 +1103,7 @@ module Atom
1100
1103
  gen = gen.is_a?(Generator) ? gen : Generator.new(:name => gen)
1101
1104
  set(Namespace::ATOM, 'generator', gen)
1102
1105
  end
1103
-
1106
+
1104
1107
  def language
1105
1108
  @elem.attributes['xml:lang']
1106
1109
  end
@@ -1229,7 +1232,7 @@ module Atompub
1229
1232
  return true if @collection.nil?
1230
1233
  if @accepts.nil?
1231
1234
  @accepts = @collection.accepts.collect do |accept|
1232
- accept.text.split(/[\s,]+/)
1235
+ accept.text.split(/[\s,]+/)
1233
1236
  end.flatten
1234
1237
  @accepts << Atom::MediaType::ENTRY if @accepts.empty?
1235
1238
  end
@@ -1269,7 +1272,7 @@ module Atompub
1269
1272
  collection.accepts.each { |a| coll.add_accept a.text }
1270
1273
  collection.categories_list.each do |cats|
1271
1274
  unless cats.nil?
1272
- new_cats = cats.href.nil?? clone_categories(cats) : get_categories(cats.href, client)
1275
+ new_cats = cats.href.nil?? clone_categories(cats) : get_categories(cats.href, client)
1273
1276
  coll.categories = new_cats unless new_cats.nil?
1274
1277
  end
1275
1278
  end
@@ -1352,8 +1355,8 @@ module Atompub
1352
1355
  @rc = Atom::Service.new :stream => @res.body
1353
1356
  @rc.workspaces.each do |workspace|
1354
1357
  workspace.collections.each do |collection|
1355
- #@service_info.put(collection.href, collection, self)
1356
- @service_info.put(collection.href, collection)
1358
+ #@service_info.put(collection.href, collection, self)
1359
+ @service_info.put(collection.href, collection)
1357
1360
  end
1358
1361
  end
1359
1362
  end
@@ -1490,7 +1493,7 @@ module Atompub
1490
1493
  # client.delete_entry(entry.edit_link)
1491
1494
  #
1492
1495
  def delete_entry(edit_uri)
1493
- delete_resource(edit_uri)
1496
+ delete_resource(edit_uri)
1494
1497
  end
1495
1498
  # Delete media
1496
1499
  #
@@ -1506,7 +1509,7 @@ module Atompub
1506
1509
  # Set request headers those are required on each request accessing resources.
1507
1510
  def set_common_info(req)
1508
1511
  req['User-Agent'] = @agent
1509
- @auth.authorize(req)
1512
+ @auth.authorize(req)
1510
1513
  end
1511
1514
  # Get contents, for example, service-document, categories, and feed.
1512
1515
  def get_contents_except_resources(uri, &block)
@@ -1671,7 +1674,7 @@ module Atompub
1671
1674
  # initializer
1672
1675
  #
1673
1676
  # Set two parameters as hash
1674
- # * username
1677
+ # * username
1675
1678
  # * password
1676
1679
  #
1677
1680
  # Usage:
@@ -1714,7 +1717,7 @@ module Atompub
1714
1717
  # initializer
1715
1718
  #
1716
1719
  # Set two parameters as hash
1717
- # * username
1720
+ # * username
1718
1721
  # * password
1719
1722
  #
1720
1723
  # Usage:
@@ -1,5 +1,16 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper.rb'
2
2
 
3
+ require 'base64'
4
+
5
+ describe Atom::Entry, "setter/getter and building xml" do
6
+
7
+ it "should escape body collectly" do
8
+ entry = Atom::Entry.new
9
+ entry.content = "&lt;br&gt;"
10
+ entry.to_s.should == "<?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom'><content type='text'>&amp;lt;br&amp;gt;</content></entry>"
11
+ end
12
+ end
13
+
3
14
  describe Atom::Content, "setter/getter and building xml" do
4
15
 
5
16
  it "should set and get type" do
@@ -30,6 +41,14 @@ describe Atom::Content, "setter/getter and building xml" do
30
41
  content.type.should == 'foo/bar'
31
42
  end
32
43
 
44
+ it "should handle UTF-8 text body collectly" do
45
+ content = Atom::Content.new
46
+ content.body = 'こんにちは'
47
+ content.body.should == 'こんにちは'
48
+ content.type = 'foo/bar'
49
+ content.type.should == 'foo/bar'
50
+ end
51
+
33
52
  it "should handle xhtml body collectly" do
34
53
  content = Atom::Content.new
35
54
  content.body = '<p>This is a test with XHTML</p>'
@@ -45,11 +64,205 @@ describe Atom::Content, "setter/getter and building xml" do
45
64
  end
46
65
 
47
66
  it "should handle image data collectly" do
67
+ img_b64 = <<EOF;
68
+ /9j/4AAQSkZJRgABAQAAkACQAAD/4QCARXhpZgAATU0AKgAAAAgABQESAAMA
69
+ AAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdp
70
+ AAQAAAABAAAAWgAAAAAAAACQAAAAAQAAAJAAAAABAAKgAgAEAAAAAQAAAGSg
71
+ AwAEAAAAAQAAAGQAAAAA/+EJIWh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu
72
+ MC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6
73
+ TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRh
74
+ LyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPiA8cmRmOlJERiB4bWxuczpy
75
+ ZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1u
76
+ cyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIi8+IDwvcmRmOlJE
77
+ Rj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
78
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
79
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
80
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
81
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
82
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
83
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
84
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
85
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
86
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
87
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
88
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
89
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
90
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
91
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
92
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
93
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
94
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
95
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
96
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
97
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
98
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
99
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
100
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
101
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
102
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
103
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
104
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
105
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
106
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
107
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
108
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
109
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
110
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
111
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
112
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
113
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
114
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
115
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
116
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
117
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
118
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
119
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
120
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
121
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
122
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFj
123
+ a2V0IGVuZD0idyI/PgD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4
124
+ QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/+IM5ElDQ19QUk9GSUxFAAEB
125
+ AAAM1GFwcGwCEAAAbW50clJHQiBYWVogB+IAAQAKAAAAIwAVYWNzcEFQUEwA
126
+ AAAAQVBQTAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAA
127
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARZGVz
128
+ YwAAAVAAAABiZHNjbQAAAbQAAAG8Y3BydAAAA3AAAAAjd3RwdAAAA5QAAAAU
129
+ clhZWgAAA6gAAAAUZ1hZWgAAA7wAAAAUYlhZWgAAA9AAAAAUclRSQwAAA+QA
130
+ AAgMYWFyZwAAC/AAAAAgdmNndAAADBAAAAAwbmRpbgAADEAAAAA+Y2hhZAAA
131
+ DIAAAAAsbW1vZAAADKwAAAAoYlRSQwAAA+QAAAgMZ1RSQwAAA+QAAAgMYWFi
132
+ ZwAAC/AAAAAgYWFnZwAAC/AAAAAgZGVzYwAAAAAAAAAIRGlzcGxheQAAAAAA
133
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
134
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAIwAA
135
+ AAxockhSAAAACAAAAbRrb0tSAAAACAAAAbRuYk5PAAAACAAAAbRpZAAAAAAA
136
+ CAAAAbRodUhVAAAACAAAAbRjc0NaAAAACAAAAbRkYURLAAAACAAAAbR1a1VB
137
+ AAAACAAAAbRhcgAAAAAACAAAAbR6aFRXAAAACAAAAbRyb1JPAAAACAAAAbRu
138
+ bE5MAAAACAAAAbRoZUlMAAAACAAAAbRlc0VTAAAACAAAAbRmaUZJAAAACAAA
139
+ AbRpdElUAAAACAAAAbR2aVZOAAAACAAAAbRza1NLAAAACAAAAbR6aENOAAAA
140
+ CAAAAbRydVJVAAAACAAAAbRtcwAAAAAACAAAAbRmckZSAAAACAAAAbRoaUlO
141
+ AAAACAAAAbR0aFRIAAAACAAAAbRjYUVTAAAACAAAAbRlc1hMAAAACAAAAbRk
142
+ ZURFAAAACAAAAbRlblVTAAAACAAAAbRwdEJSAAAACAAAAbRwbFBMAAAACAAA
143
+ AbRlbEdSAAAACAAAAbRzdlNFAAAACAAAAbR0clRSAAAACAAAAbRqYUpQAAAA
144
+ CAAAAbRwdFBUAAAACAAAAbQAaQBNAGEAY3RleHQAAAAAQ29weXJpZ2h0IEFw
145
+ cGxlIEluYy4sIDIwMTgAAFhZWiAAAAAAAADwzwABAAAAARkRWFlaIAAAAAAA
146
+ AIXsAAA+t////7ZYWVogAAAAAAAASbUAALIwAAALNlhZWiAAAAAAAAAnNAAA
147
+ DxkAAMhBY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA2ADsA
148
+ QABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKMAqACt
149
+ ALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUB
150
+ KwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJ
151
+ AdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4C
152
+ mAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOK
153
+ A5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgE
154
+ tgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYG
155
+ BhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YH
156
+ mQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglP
157
+ CWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL
158
+ UQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10
159
+ DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P
160
+ 7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKE
161
+ EqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYV
162
+ eBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiK
163
+ GK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9oc
164
+ AhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+U
165
+ H78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2Yj
166
+ lCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneier
167
+ J9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUs
168
+ OSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDb
169
+ MRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1
170
+ /TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zst
171
+ O2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA
172
+ 50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0ar
173
+ RvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpN
174
+ Ak1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf
175
+ U6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4Wgda
176
+ VlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFP
177
+ YaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo
178
+ 7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CG
179
+ cOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54
180
+ zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEK
181
+ gWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ
182
+ /opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLj
183
+ k02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByc
184
+ iZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYa
185
+ poum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACw
186
+ dbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1
187
+ uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvF
188
+ yMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC6
189
+ 0TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXc
190
+ it0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy
191
+ 6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0
192
+ wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJh
193
+ AAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW3ZjZ3QAAAAAAAAAAQABAAAA
194
+ AAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAA
195
+ rgAAAFIAAABBgAAAskAAACYAAAAOAAAAT0AAAFRAAAIzMwACMzMAAjMzAAAA
196
+ AAAAAABzZjMyAAAAAAABDqsAAAch///ybwAACW8AAPxH///7UP///ZwAAAPU
197
+ AAC+6G1tb2QAAAAAAAAGEAAArhNoYy5F0v6AgAAAAAAAAAAAAAAAAAAAAAD/
198
+ wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF
199
+ BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJx
200
+ FDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdI
201
+ SUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKj
202
+ pKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
203
+ 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QA
204
+ tREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHB
205
+ CSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldY
206
+ WVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq
207
+ srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6
208
+ /9sAQwACAgICAgIDAgIDBAMDAwQFBAQEBAUHBQUFBQUHCAcHBwcHBwgICAgI
209
+ CAgICgoKCgoKCwsLCwsNDQ0NDQ0NDQ0N/9sAQwECAgIDAwMGAwMGDQkHCQ0N
210
+ DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
211
+ DQ0N/90ABAAH/9oADAMBAAIRAxEAPwD+f+iiigAooooAKKKKACiiigAooooA
212
+ KKKKACiiigD/0P5/6KKKACiium8IeD/EHjrXrfw34atWur24PAHCRoPvSSN0
213
+ VF7k/QZJAIa0KFStUjSoxcpN2SWrbfRHM13Phz4Z/EDxcizeHPD+oX0LdJ0g
214
+ YQH/ALasAn/j1fpL8Lf2YvA3gOGG/wBehj8Qa0AGae5TdbQtjpDC2V4PR3Bb
215
+ uNvSvpVVVFCqAABgAcAAVDn2P3HIPBSvWpqrm1bkv9mNm/nLZP0T9T8hP+GZ
216
+ fjh5fm/8Iy+3rj7ZZ7v++fPz+lcB4j+GfxA8Io03iPw/qFjCvWd4GMA/7aqC
217
+ n/j1ft3SMqupVgCCMEHkEGp52fR4nwQyuULYfEVIy7vlkvuSj+Z+BlFfq78U
218
+ v2YvA3jyGa/0GGPw/rRBZZrZNttM3pNCuF5PV0Abud3SvzI8X+D/ABB4F164
219
+ 8N+JbVrW9tzyDykiH7skbdGRuxH0OCCBopJn4xxZwNmOQTTxK5qb2mtvR9n5
220
+ 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
258
+ EOF
259
+
260
+ img = Base64.decode64(img_b64)
48
261
  content = Atom::Content.new
49
262
  content.type = 'image/jpeg'
50
- content.body = "\xff\xde\xde\xde"
263
+ content.body = img
51
264
  content.type.should == 'image/jpeg'
52
- content.body.should == "\xff\xde\xde\xde"
265
+ content.body.should == img
53
266
  end
54
267
 
55
268
  end
metadata CHANGED
@@ -1,71 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atomutil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - lyokato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2011-09-29 00:00:00.000000000 Z
11
+ date: 2018-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "<"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.4.0
20
- type: :development
19
+ version: '11.0'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "<"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.4.0
26
+ version: '11.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
28
+ name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.0
33
+ version: 2.4.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.0
40
+ version: 2.4.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: jeweler
42
+ name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.5.2
47
+ version: 1.16.1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.5.2
54
+ version: 1.16.1
55
55
  - !ruby/object:Gem::Dependency
56
- name: rcov
56
+ name: jeweler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 2.3.9
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 2.3.9
69
69
  description: This library allows your to handle AtomPub and Atom Feed easily
70
70
  email: lyo.kato@gmail.com
71
71
  executables: []
@@ -73,8 +73,9 @@ extensions: []
73
73
  extra_rdoc_files:
74
74
  - README.rdoc
75
75
  files:
76
- - .document
77
- - .rspec
76
+ - ".document"
77
+ - ".rspec"
78
+ - CHANGELOG.md
78
79
  - Gemfile
79
80
  - Gemfile.lock
80
81
  - License.txt
@@ -106,29 +107,18 @@ require_paths:
106
107
  - lib
107
108
  required_ruby_version: !ruby/object:Gem::Requirement
108
109
  requirements:
109
- - - '>='
110
+ - - ">="
110
111
  - !ruby/object:Gem::Version
111
112
  version: '0'
112
113
  required_rubygems_version: !ruby/object:Gem::Requirement
113
114
  requirements:
114
- - - '>='
115
+ - - ">="
115
116
  - !ruby/object:Gem::Version
116
117
  version: '0'
117
118
  requirements: []
118
119
  rubyforge_project:
119
- rubygems_version: 2.0.0
120
+ rubygems_version: 2.7.6
120
121
  signing_key:
121
- specification_version: 3
122
+ specification_version: 4
122
123
  summary: Ruby AtomPub Client
123
- test_files:
124
- - spec/categories_spec.rb
125
- - spec/category_spec.rb
126
- - spec/content_spec.rb
127
- - spec/customfeed_spec.rb
128
- - spec/feed_spec.rb
129
- - spec/link_spec.rb
130
- - spec/namespace_spec.rb
131
- - spec/opensearch_spec.rb
132
- - spec/person_spec.rb
133
- - spec/spec_helper.rb
134
- - spec/threading_spec.rb
124
+ test_files: []