xommelier 0.1.31 → 0.1.32

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
  SHA1:
3
- metadata.gz: 75bd4f6f2751ba556d0a35cefa150d5886511aae
4
- data.tar.gz: ee0278a00499fa04929e81f056f89ff5a23846fa
3
+ metadata.gz: 5021eac8283a90857cbf59e48a66eba7f920483a
4
+ data.tar.gz: 9903d50374acb7e8d1478b19ae6890289a9936cf
5
5
  SHA512:
6
- metadata.gz: 8b6ef44e264d5267325647479dfffe5275f9238885eef222a2a3394567fa217a207e2efac00c7240cdbf89362524c05cc8c37b3cdcc3e38cb7f3f6a2973c8ce5
7
- data.tar.gz: 999d6a89bce33c2729e146f40373af807f4b57a6d9e33b7e3274cbee943b63fc5335495e5d9331067a8b38ad9f85ff51c068356c54a2f005f343ebdb97943096
6
+ metadata.gz: 189d9e449e0af6d6cbebb21fa8ac822184aa3d6afa4d7b02d6015909f88049327a3202c6459a9917ac0d629e0f30c3d3fddada45ae9cb031a64f58523e93bba8
7
+ data.tar.gz: 47df7ea79aabb669ab39b2847dc2248d92d9baf5f540ef7d27571df09265c682c9ad2e3dfb390ddf401c54df73a373ab3011885f3a88ddd78c8e45b581ad4e12
data/.gitignore CHANGED
@@ -5,3 +5,4 @@
5
5
  /pkg/*
6
6
  /doc
7
7
  /coverage
8
+ .ruby-version
data/.travis.yml CHANGED
@@ -1,5 +1,7 @@
1
+ sudo: false
1
2
  language: ruby
3
+ cache: bundler
2
4
  rvm:
3
5
  - 1.9.3
4
- before_install: gem install bundler
6
+ - 2.3.0
5
7
  bundler_args: --without ide documentation
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'http://rubygems.org'
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in xommelier.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -200,3 +200,7 @@ will output
200
200
  * Sergey Ukustov
201
201
 
202
202
  © Alexander Semyonov, 2011-2012. See MIT-LICENSE for details
203
+
204
+
205
+ [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/alsemyonov/xommelier/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
206
+
@@ -6,5 +6,5 @@
6
6
  ################################################
7
7
 
8
8
  module Xommelier
9
- VERSION = '0.1.31'
9
+ VERSION = '0.1.32'
10
10
  end
@@ -94,6 +94,7 @@ module Xommelier
94
94
  end
95
95
  attribute_values.delete("xmlns:#{xmlns.as}")
96
96
  attribute_values.delete('xmlns:xml')
97
+ attribute_values.delete(:xmlns) if self.xmlns.default?
97
98
  namespaces = attribute_values
98
99
  prefix = nil
99
100
  end
@@ -9,6 +9,7 @@ require 'xommelier/xml/element'
9
9
  require 'xommelier/xml/element/structure/property'
10
10
  require 'active_support/concern'
11
11
  require 'active_support/core_ext/module/delegation'
12
+ require 'active_support/core_ext/module/aliasing'
12
13
  require 'active_support/core_ext/object/with_options'
13
14
  require 'active_support/core_ext/object/try'
14
15
  require 'active_support/core_ext/string/inflections'
@@ -20,6 +21,7 @@ module Xommelier
20
21
  module Structure
21
22
  extend ActiveSupport::Concern
22
23
 
24
+
23
25
  included do
24
26
  class_attribute :elements, :attributes
25
27
 
@@ -12,6 +12,7 @@ require 'xommelier/xml/element/serialization'
12
12
  require 'active_support/core_ext/string/inflections'
13
13
  require 'active_support/core_ext/array/extract_options'
14
14
  require 'active_support/core_ext/class/attribute'
15
+ require 'active_support/core_ext/module/delegation'
15
16
 
16
17
  module Xommelier
17
18
  module Xml
@@ -55,6 +56,8 @@ module Xommelier
55
56
  %(#<#{self.class.name}:0x#{object_id.to_s(16)} #{inspect_contents}>)
56
57
  end
57
58
 
59
+ delegate :match, to: :to_s
60
+
58
61
  private
59
62
 
60
63
  def inspect_contents
@@ -7,7 +7,7 @@
7
7
 
8
8
  require 'spec_helper'
9
9
 
10
- describe Xommelier::Atom::Feed do
10
+ RSpec.describe Xommelier::Atom::Feed do
11
11
  describe '.new(Hash)' do
12
12
  let(:hash) do
13
13
  {
@@ -29,13 +29,13 @@ describe Xommelier::Atom::Feed do
29
29
 
30
30
  subject(:doc) { Xommelier::Atom::Feed.new(hash) }
31
31
 
32
- it { should have(1).authors }
33
- it { should have(2).contributors }
34
- it { should have(3).entries }
32
+ its('authors.size') { should == 1 }
33
+ its('contributors.size') { should == 2 }
34
+ its('entries.size') { should == 3 }
35
35
 
36
- it { doc.author.should be_an(Xommelier::Atom::Person) }
37
- it { doc.contributors[1].should be_an(Xommelier::Atom::Person) }
38
- it { doc.entries[1].should be_an(Xommelier::Atom::Entry) }
36
+ it { expect(doc.author).to be_an(Xommelier::Atom::Person) }
37
+ it { expect(doc.contributors[1]).to be_an(Xommelier::Atom::Person) }
38
+ it { expect(doc.entries[1]).to be_an(Xommelier::Atom::Entry) }
39
39
 
40
40
  its(:to_hash) { should == hash}
41
41
  its(:to_xml) { should == load_xml_file('nested_atom') }
@@ -34,7 +34,7 @@ describe Xommelier::Atom::Feed do
34
34
  it_behaves_like 'Valid XML Document'
35
35
 
36
36
  its(:to_xml) { should == load_xml_file('simple_feed.atom') }
37
- it('should conform to RelaxNG schema') { rng.valid?(parsed_xml).should == true }
38
- it('should conform to XML Schema') { xsd.valid?(parsed_xml).should == true }
37
+ it('should conform to RelaxNG schema') { expect(rng.valid?(parsed_xml)).to eq(true) }
38
+ it('should conform to XML Schema') { expect(xsd.valid?(parsed_xml)).to eq(true) }
39
39
  end
40
40
  end
@@ -14,45 +14,45 @@ describe Xommelier::Atom::Feed do
14
14
  let(:atom_xml) { load_xml_file('feed.atom') }
15
15
  subject(:feed) { Xommelier::Atom::Feed.parse(atom_xml) }
16
16
 
17
- it { should be_kind_of(Xommelier::Atom::Feed) }
18
- it { should respond_to(:complete?) }
19
- it { should respond_to(:archive?) }
17
+ it { is_expected.to be_kind_of(Xommelier::Atom::Feed) }
18
+ it { is_expected.to respond_to(:complete?) }
19
+ it { is_expected.to respond_to(:archive?) }
20
20
 
21
21
  its(:id) { should == 'urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6' }
22
22
  its(:title) { should == 'Example Feed' }
23
23
  its(:updated) { should == Time.utc(2003, 12, 13, 18, 30, 20) }
24
24
  its(:subtitle) { should == 'A <em>lot</em> of effort went into making this effortless' }
25
25
 
26
- it { should have(3).links }
26
+ its('links.size') { should == 3 }
27
27
  its(:link) { should be_instance_of(Xommelier::Atom::Link) }
28
- it { feed.links[0].href.should == URI.parse('http://example.ru/') }
29
- it { feed.links[0].rel.should == 'alternate' }
30
- it { feed.links[0].type.should == 'text/html' }
31
- it { feed.links[1].href.should == URI.parse('http://example.ru/feed.atom') }
32
- it { feed.links[1].rel.should == 'self' }
33
- it { feed.links[1].type.should == 'application/atom+xml' }
28
+ it { expect(feed.links[0].href).to eq(URI.parse('http://example.ru/')) }
29
+ it { expect(feed.links[0].rel).to eq('alternate') }
30
+ it { expect(feed.links[0].type).to eq('text/html') }
31
+ it { expect(feed.links[1].href).to eq(URI.parse('http://example.ru/feed.atom')) }
32
+ it { expect(feed.links[1].rel).to eq('self') }
33
+ it { expect(feed.links[1].type).to eq('application/atom+xml') }
34
34
  its(:feed_url) { should == URI.parse('http://example.ru/feed.atom') }
35
35
  its(:html_url) { should == URI.parse('http://example.ru/') }
36
36
  its(:next_feed_url) { should == URI.parse('http://example.ru/feed.atom?page=2') }
37
37
 
38
- its(:archive) { should be_true }
39
- its(:complete) { should be_false }
38
+ its(:archive) { should be_truthy }
39
+ its(:complete) { should be_falsey }
40
40
  its(:rights) { should == '© Mark Pilgrim, 2003' }
41
41
  describe 'Generator' do
42
42
  subject { feed.generator }
43
43
  context '#to_s' do
44
- it { should == 'Example Toolkit' }
44
+ it { is_expected.to eq('Example Toolkit') }
45
45
  its(:text) { should == 'Example Toolkit' }
46
46
  end
47
47
  its(:uri) { should == URI.parse('http://example.com/') }
48
48
  its(:version) { should == '1.0' }
49
49
  end
50
50
 
51
- it { should have(1).authors }
51
+ its('authors.size') { should == 1 }
52
52
  its(:author) { should be_instance_of(Xommelier::Atom::Person) }
53
- it { feed.author.name.should == 'John Doe' }
53
+ it { expect(feed.author.name).to eq('John Doe') }
54
54
 
55
- it { feed.should have(2).entries }
55
+ it { expect(feed.entries.size).to eq(2) }
56
56
  describe 'Entry' do
57
57
  subject(:entry) { feed.entries[0] }
58
58
 
@@ -61,24 +61,24 @@ describe Xommelier::Atom::Feed do
61
61
  its(:updated) { should == Time.utc(2003, 12, 13, 18, 30, 02) }
62
62
  its(:published) { should == Time.utc(2003, 12, 13, 8, 29, 29) + 4.hours }
63
63
 
64
- it { should have(3).links }
64
+ its('links.size') { should == 3 }
65
65
  its(:link) { should be_instance_of(Xommelier::Atom::Link) }
66
- it { entry.links[0].href.should == URI.parse('http://example.ru/2003/12/13/atom03') }
67
- it { entry.links[0].rel.should == 'alternate' }
68
- it { entry.links[0].type.should == 'text/html' }
69
- it { entry.links[1].href.should == URI.parse('http://example.org/audio/ph34r_my_podcast.mp3') }
70
- it { entry.links[1].rel.should == 'enclosure' }
71
- it { entry.links[1].type.should == 'audio/mpeg' }
72
- it { entry.links[1].length.should == 1337 }
73
- it { entry.links[2].href.should == URI.parse('http://example.ru/2003/12/13/atom03/comments.atom') }
74
- it { entry.links[2].rel.should == 'replies' }
75
- it { entry.links[2].type.should == 'application/atom+xml' }
76
- it { entry.links[2].count.should == 1 }
77
- it { entry.links[2].updated.should == Time.utc(2003, 12, 13, 18, 30, 20) }
66
+ it { expect(entry.links[0].href).to eq(URI.parse('http://example.ru/2003/12/13/atom03')) }
67
+ it { expect(entry.links[0].rel).to eq('alternate') }
68
+ it { expect(entry.links[0].type).to eq('text/html') }
69
+ it { expect(entry.links[1].href).to eq(URI.parse('http://example.org/audio/ph34r_my_podcast.mp3')) }
70
+ it { expect(entry.links[1].rel).to eq('enclosure') }
71
+ it { expect(entry.links[1].type).to eq('audio/mpeg') }
72
+ it { expect(entry.links[1].length).to eq(1337) }
73
+ it { expect(entry.links[2].href).to eq(URI.parse('http://example.ru/2003/12/13/atom03/comments.atom')) }
74
+ it { expect(entry.links[2].rel).to eq('replies') }
75
+ it { expect(entry.links[2].type).to eq('application/atom+xml') }
76
+ it { expect(entry.links[2].count).to eq(1) }
77
+ it { expect(entry.links[2].updated).to eq(Time.utc(2003, 12, 13, 18, 30, 20)) }
78
78
  its(:html_url) { should == URI.parse('http://example.ru/2003/12/13/atom03') }
79
79
  its(:replies_feed_url) { should == URI.parse('http://example.ru/2003/12/13/atom03/comments.atom') }
80
80
 
81
- it { should have(1).authors }
81
+ its('authors.size') { should == 1 }
82
82
 
83
83
  describe 'Author' do
84
84
  subject { entry.author }
@@ -87,13 +87,13 @@ describe Xommelier::Atom::Feed do
87
87
  its(:email) { should == 'f8dy@example.com' }
88
88
  end
89
89
 
90
- it { should have(2).contributors }
91
- it { entry.contributors[0].name.should == 'Sam Ruby' }
92
- it { entry.contributors[1].name.should == 'Joe Gregorio' }
90
+ its('contributors.size') { should == 2 }
91
+ it { expect(entry.contributors[0].name).to eq('Sam Ruby') }
92
+ it { expect(entry.contributors[1].name).to eq('Joe Gregorio') }
93
93
  its(:summary) { should == 'Some text.' }
94
94
  context 'Content' do
95
95
  subject { entry.content }
96
- it { should =~ /#{Regexp.escape('[Update: The Atom draft is finished.]')}/ }
96
+ it { is_expected.to match(/#{Regexp.escape('[Update: The Atom draft is finished.]')}/) }
97
97
  its(:text) do
98
98
  should == "\n <div xmlns=\"http://www.w3.org/1999/xhtml\">\n <p><i>[Update: The Atom draft is finished.]</i></p>\n </div>\n "
99
99
  end
@@ -41,6 +41,6 @@ describe 'Atom feed building' do
41
41
  let(:xsd) { Nokogiri::XML::Schema(load_xml_file('atom.xsd')) }
42
42
 
43
43
  its(:to_xml) { should == load_xml_file('multi_namespace_feed.atom') }
44
- it('should conform to RelaxNG schema') { rng.valid?(parsed_xml).should == true }
44
+ it('should conform to RelaxNG schema') { expect(rng.valid?(parsed_xml)).to eq(true) }
45
45
  it_behaves_like 'Valid XML Document'
46
46
  end
@@ -13,7 +13,7 @@ describe Xommelier::OpenSearch::Description do
13
13
  let(:osd_xml) { load_xml_file('opensearch.full') }
14
14
  subject(:description) { Xommelier::OpenSearch::Description.parse(osd_xml) }
15
15
 
16
- its(:adult_content) { should be_false }
16
+ its(:adult_content) { should be_falsey }
17
17
  its(:attribution) { should == "\n Search data Copyright 2005, Example.com, Inc., All Rights Reserved\n " }
18
18
  its(:contact) { should == 'admin@example.com' }
19
19
  its(:description) { should == 'Use Example.com to search the Web.' }
@@ -26,26 +26,26 @@ describe Xommelier::OpenSearch::Description do
26
26
  its(:syndication_right) { should == 'open' }
27
27
  its(:tags) { should == 'example web' }
28
28
 
29
- it { should have(2).images }
29
+ its('images.size') { should == 2 }
30
30
  describe '#images' do
31
- it { subject.images[0].should == 'http://example.com/websearch.png' }
32
- it { subject.images[0].type.should == 'image/png' }
33
- it { subject.images[0].height.should == 64 }
34
- it { subject.images[0].width.should == 64 }
35
- it { subject.images[1].should == 'http://example.com/websearch.ico' }
36
- it { subject.images[1].type.should == 'image/vnd.microsoft.icon' }
37
- it { subject.images[1].height.should == 16 }
38
- it { subject.images[1].width.should == 16 }
31
+ it { expect(subject.images[0]).to eq('http://example.com/websearch.png') }
32
+ it { expect(subject.images[0].type).to eq('image/png') }
33
+ it { expect(subject.images[0].height).to eq(64) }
34
+ it { expect(subject.images[0].width).to eq(64) }
35
+ it { expect(subject.images[1]).to eq('http://example.com/websearch.ico') }
36
+ it { expect(subject.images[1].type).to eq('image/vnd.microsoft.icon') }
37
+ it { expect(subject.images[1].height).to eq(16) }
38
+ it { expect(subject.images[1].width).to eq(16) }
39
39
  end
40
40
 
41
- it { should have(3).urls }
41
+ its('urls.size') { should == 3 }
42
42
  describe '#urls' do
43
- it { subject.urls[0].type.should == 'application/atom+xml' }
44
- it { subject.urls[0].template.should == 'http://example.com/?q={searchTerms}&pw={startPage?}&format=atom' }
45
- it { subject.urls[1].type.should == 'application/rss+xml' }
46
- it { subject.urls[1].template.should == 'http://example.com/?q={searchTerms}&pw={startPage?}&format=rss' }
47
- it { subject.urls[2].type.should == 'text/html' }
48
- it { subject.urls[2].template.should == 'http://example.com/?q={searchTerms}&pw={startPage?}' }
43
+ it { expect(subject.urls[0].type).to eq('application/atom+xml') }
44
+ it { expect(subject.urls[0].template).to eq('http://example.com/?q={searchTerms}&pw={startPage?}&format=atom') }
45
+ it { expect(subject.urls[1].type).to eq('application/rss+xml') }
46
+ it { expect(subject.urls[1].template).to eq('http://example.com/?q={searchTerms}&pw={startPage?}&format=rss') }
47
+ it { expect(subject.urls[2].type).to eq('text/html') }
48
+ it { expect(subject.urls[2].template).to eq('http://example.com/?q={searchTerms}&pw={startPage?}') }
49
49
  end
50
50
  end
51
51
  end
@@ -14,7 +14,7 @@ describe 'RSS feed' do
14
14
  let(:rss_xml) { load_xml_file('feed.rss2.0') }
15
15
  subject(:feed) { Xommelier::RSS::Rss.parse(rss_xml) }
16
16
 
17
- it { should be_kind_of(Xommelier::RSS::Rss) }
17
+ it { is_expected.to be_kind_of(Xommelier::RSS::Rss) }
18
18
 
19
19
  its(:title) { should == 'Liftoff News' }
20
20
  its(:last_build_date) { should == Time.utc(2003, 6, 10, 9, 41, 01) }
@@ -27,7 +27,7 @@ describe 'RSS feed' do
27
27
  its(:managing_editor) { should == 'editor@example.com' }
28
28
  its(:web_master) { should == 'webmaster@example.com' }
29
29
 
30
- it { feed.should have(4).items }
30
+ it { expect(feed.items.size).to eq(4) }
31
31
  describe 'Item' do
32
32
  subject(:item) { feed.items[0] }
33
33
 
@@ -12,14 +12,14 @@ describe Xommelier::Atom::Entry do
12
12
  subject { Xommelier::Atom::Entry.new }
13
13
 
14
14
  [:id, :title, :updated].each do |must_field|
15
- it { should respond_to(must_field) }
15
+ it { is_expected.to respond_to(must_field) }
16
16
  end
17
17
  [:content, :published, :rights, :source, :summary].each do |may_field|
18
- it { should respond_to(may_field) }
18
+ it { is_expected.to respond_to(may_field) }
19
19
  end
20
20
  %w(author category contributor link).each do |any_field|
21
- it { should respond_to(any_field) }
22
- it('have plural methods for embedded collections') { should respond_to(any_field.pluralize) }
21
+ it { is_expected.to respond_to(any_field) }
22
+ it('have plural methods for embedded collections') { is_expected.to respond_to(any_field.pluralize) }
23
23
  end
24
24
  end
25
25
  end
@@ -12,19 +12,19 @@ describe Xommelier::DS do
12
12
  end
13
13
 
14
14
  describe Xommelier::DS::Signature do
15
- it { should respond_to(:signed_info) }
16
- it { should respond_to(:signature_value) }
17
- it { should respond_to(:key_info) }
15
+ it { is_expected.to respond_to(:signed_info) }
16
+ it { is_expected.to respond_to(:signature_value) }
17
+ it { is_expected.to respond_to(:key_info) }
18
18
  end
19
19
 
20
20
  describe Xommelier::DS::SignedInfo do
21
- it { should respond_to(:canonicalization_method) }
22
- it { should respond_to(:signature_method) }
23
- it { should respond_to(:reference) }
21
+ it { is_expected.to respond_to(:canonicalization_method) }
22
+ it { is_expected.to respond_to(:signature_method) }
23
+ it { is_expected.to respond_to(:reference) }
24
24
  end
25
25
 
26
26
  describe Xommelier::DS::CanonicalizationMethod do
27
- it { should respond_to(:algorithm) }
27
+ it { is_expected.to respond_to(:algorithm) }
28
28
 
29
29
  describe '.new_omit_comments' do
30
30
  subject { described_class.new_omit_comments }
@@ -38,7 +38,7 @@ describe Xommelier::DS::CanonicalizationMethod do
38
38
  end
39
39
 
40
40
  describe Xommelier::DS::SignatureMethod do
41
- it { should respond_to(:hmac_output_length) }
41
+ it { is_expected.to respond_to(:hmac_output_length) }
42
42
 
43
43
  describe '.new_rsa_sha1' do
44
44
  subject { described_class.new_rsa_sha1 }
@@ -52,7 +52,7 @@ describe Xommelier::DS::SignatureMethod do
52
52
  end
53
53
 
54
54
  describe Xommelier::DS::Transform do
55
- it { should respond_to(:xpath) }
55
+ it { is_expected.to respond_to(:xpath) }
56
56
 
57
57
  describe '.new_xslt' do
58
58
  subject { described_class.new_xslt }
@@ -81,9 +81,9 @@ describe Xommelier::DS::DigestMethod do
81
81
  end
82
82
 
83
83
  describe Xommelier::DS::Reference do
84
- it { should respond_to(:digest_method) }
85
- it { should respond_to(:digest_value) }
86
- it { should respond_to(:uri) }
84
+ it { is_expected.to respond_to(:digest_method) }
85
+ it { is_expected.to respond_to(:digest_value) }
86
+ it { is_expected.to respond_to(:uri) }
87
87
  end
88
88
 
89
89
  describe Xommelier::DS::Signature, '(signature-example-rsa.xml)' do
@@ -15,15 +15,15 @@ describe Xommelier::RSS::EmailAddress do
15
15
  }.each do |email_address, (address, name)|
16
16
  it "parses #{email_address.inspect} as address:#{address.inspect}, name:#{name.inspect}" do
17
17
  e = described_class.from_xommelier(email_address)
18
- e.should == address
19
- e.name.should == name
18
+ expect(e).to eq(address)
19
+ expect(e.name).to eq(name)
20
20
  end
21
21
 
22
22
  it "produces #{email_address.inspect} from address:#{address.inspect}, name:#{name.inspect}" do
23
23
  e = described_class.new
24
24
  e.address = address
25
25
  e.name = name
26
- e.to_xommelier.should == email_address
26
+ expect(e.to_xommelier).to eq(email_address)
27
27
  end
28
28
  end
29
29
  end
@@ -11,6 +11,6 @@ describe Xommelier::Xml::Element::Serialization do
11
11
  describe 'class' do
12
12
  subject { Xommelier::Atom::Feed }
13
13
 
14
- it { should respond_to(:parse) }
14
+ it { is_expected.to respond_to(:parse) }
15
15
  end
16
16
  end
@@ -10,25 +10,25 @@ require 'spec_helper'
10
10
  describe Xommelier::Xml::Element::Structure do
11
11
  subject { NamespacedModule::RootWithSimpleSubelement }
12
12
 
13
- it { should respond_to(:elements) }
14
- it { should respond_to(:element) }
13
+ it { is_expected.to respond_to(:elements) }
14
+ it { is_expected.to respond_to(:element) }
15
15
  it 'defines subelement' do
16
- NamespacedModule::RootWithSimpleSubelement.elements.should have_key(:some)
16
+ expect(NamespacedModule::RootWithSimpleSubelement.elements).to have_key(:some)
17
17
  end
18
18
 
19
- it { should respond_to(:attributes) }
20
- it { should respond_to(:attribute) }
19
+ it { is_expected.to respond_to(:attributes) }
20
+ it { is_expected.to respond_to(:attribute) }
21
21
  it 'defines attribute' do
22
- NamespacedModule::RootWithAttribute.attributes.should have_key(:another)
22
+ expect(NamespacedModule::RootWithAttribute.attributes).to have_key(:another)
23
23
  end
24
24
 
25
- it { should respond_to(:text) }
25
+ it { is_expected.to respond_to(:text) }
26
26
  it 'defines as containing text' do
27
- NamespacedModule::RootWithText.new.should respond_to(:text)
27
+ expect(NamespacedModule::RootWithText.new).to respond_to(:text)
28
28
  end
29
29
 
30
- it { should respond_to(:xmlns) }
31
- it { NamespacedModule::RootWithText.xmlns.uri.should == 'http://example.org/'}
32
- it { NamespacedModule::RootWithAttribute.xmlns.uri.should == 'http://example.org/'}
33
- it { Xommelier::Atom::Feed.xmlns.uri.should == 'http://www.w3.org/2005/Atom'}
30
+ it { is_expected.to respond_to(:xmlns) }
31
+ it { expect(NamespacedModule::RootWithText.xmlns.uri).to eq('http://example.org/')}
32
+ it { expect(NamespacedModule::RootWithAttribute.xmlns.uri).to eq('http://example.org/')}
33
+ it { expect(Xommelier::Atom::Feed.xmlns.uri).to eq('http://www.w3.org/2005/Atom')}
34
34
  end
@@ -11,33 +11,33 @@ describe Xommelier::Xml::Element do
11
11
  describe 'class' do
12
12
  subject { Xommelier::Atom::Link }
13
13
 
14
- it { should respond_to(:xmlns) }
15
- it { subject.xmlns.to_s.should == ATOM_XMLNS }
14
+ it { is_expected.to respond_to(:xmlns) }
15
+ it { expect(subject.xmlns.to_s).to eq(ATOM_XMLNS) }
16
16
 
17
- it { should respond_to(:element_name) }
18
- it { subject.element_name.should == 'link' }
17
+ it { is_expected.to respond_to(:element_name) }
18
+ it { expect(subject.element_name).to eq('link') }
19
19
  end
20
20
 
21
21
  describe 'instance' do
22
22
  subject { Xommelier::Atom::Link.new }
23
23
 
24
- it { should respond_to(:to_xml) }
25
- it { subject.to_xml.should == %(<?xml version="1.0" encoding="utf-8"?>\n<link xmlns="#{ATOM_XMLNS}"/>\n) }
24
+ it { is_expected.to respond_to(:to_xml) }
25
+ it { expect(subject.to_xml).to eq(%(<?xml version="1.0" encoding="utf-8"?>\n<link xmlns="#{ATOM_XMLNS}"/>\n)) }
26
26
 
27
27
  describe 'with text' do
28
28
  subject { NamespacedModule::RootWithText.new('Text') }
29
29
 
30
- it { should respond_to(:text) }
31
- it { subject.text.should == 'Text' }
32
- it { subject.to_xml.should == %(<?xml version="1.0" encoding="utf-8"?>\n<root-with-text xmlns="http://example.org/">Text</root-with-text>\n) }
30
+ it { is_expected.to respond_to(:text) }
31
+ it { expect(subject.text).to eq('Text') }
32
+ it { expect(subject.to_xml).to eq(%(<?xml version="1.0" encoding="utf-8"?>\n<root-with-text xmlns="http://example.org/">Text</root-with-text>\n)) }
33
33
  end
34
34
 
35
35
  describe 'with simple subelements' do
36
36
  subject { Xommelier::Atom::Person.new(name: 'Ivan') }
37
37
 
38
- it { should respond_to(:name) }
39
- it { subject.name.should == 'Ivan' }
40
- it { subject.to_xml.should == %(<?xml version="1.0" encoding="utf-8"?>\n<person xmlns="#{ATOM_XMLNS}">\n <name>Ivan</name>\n</person>\n) }
38
+ it { is_expected.to respond_to(:name) }
39
+ it { expect(subject.name).to eq('Ivan') }
40
+ it { expect(subject.to_xml).to eq(%(<?xml version="1.0" encoding="utf-8"?>\n<person xmlns="#{ATOM_XMLNS}">\n <name>Ivan</name>\n</person>\n)) }
41
41
  end
42
42
 
43
43
  describe 'with many simple subelements' do
@@ -45,18 +45,18 @@ describe Xommelier::Xml::Element do
45
45
  NamespacedModule::RootWithManySimpleSubelements.new(foos: %w(bar baz))
46
46
  end
47
47
 
48
- it { should respond_to(:foo) }
49
- it { subject.foos.should == %w(bar baz) }
50
- it { subject.foo.should == 'bar' }
51
- it { subject.to_xml.should == %(<?xml version="1.0" encoding="utf-8"?>\n<root-with-many-simple-subelements xmlns="http://example.org/">\n <foo>bar</foo>\n <foo>baz</foo>\n</root-with-many-simple-subelements>\n) }
48
+ it { is_expected.to respond_to(:foo) }
49
+ it { expect(subject.foos).to eq(%w(bar baz)) }
50
+ it { expect(subject.foo).to eq('bar') }
51
+ it { expect(subject.to_xml).to eq(%(<?xml version="1.0" encoding="utf-8"?>\n<root-with-many-simple-subelements xmlns="http://example.org/">\n <foo>bar</foo>\n <foo>baz</foo>\n</root-with-many-simple-subelements>\n)) }
52
52
  end
53
53
 
54
54
  describe 'with attribute' do
55
55
  subject { NamespacedModule::RootWithAttribute.new(another: 'Difference') }
56
56
 
57
- it { should respond_to(:another) }
58
- it { subject.another.should == 'Difference' }
59
- it { subject.to_xml.should == %(<?xml version="1.0" encoding="utf-8"?>\n<root-with-attribute xmlns="http://example.org/" another="Difference"/>\n) }
57
+ it { is_expected.to respond_to(:another) }
58
+ it { expect(subject.another).to eq('Difference') }
59
+ it { expect(subject.to_xml).to eq(%(<?xml version="1.0" encoding="utf-8"?>\n<root-with-attribute xmlns="http://example.org/" another="Difference"/>\n)) }
60
60
  end
61
61
 
62
62
  describe 'with subelements' do
@@ -69,13 +69,13 @@ describe Xommelier::Xml::Element do
69
69
  )
70
70
  end
71
71
 
72
- it { should respond_to(:one) }
73
- it { should respond_to(:two) }
74
- it { should respond_to(:some) }
75
- it { should respond_to(:another) }
76
- it { subject.another.class.should == NamespacedModule::RootWithSimpleSubelement }
77
- it { subject.another.some.should == 'Text' }
78
- it { subject.to_xml.should == %(<?xml version="1.0" encoding="utf-8"?>\n<root-with-subelement xmlns="http://example.org/" one="2011-08-15" two="2">\n <some>Text</some>\n <another>\n <some>Text</some>\n </another>\n</root-with-subelement>\n) }
72
+ it { is_expected.to respond_to(:one) }
73
+ it { is_expected.to respond_to(:two) }
74
+ it { is_expected.to respond_to(:some) }
75
+ it { is_expected.to respond_to(:another) }
76
+ it { expect(subject.another.class).to eq(NamespacedModule::RootWithSimpleSubelement) }
77
+ it { expect(subject.another.some).to eq('Text') }
78
+ it { expect(subject.to_xml).to eq(%(<?xml version="1.0" encoding="utf-8"?>\n<root-with-subelement xmlns="http://example.org/" one="2011-08-15" two="2">\n <some>Text</some>\n <another>\n <some>Text</some>\n </another>\n</root-with-subelement>\n)) }
79
79
  end
80
80
  end
81
81
  end
@@ -11,7 +11,7 @@ describe Xommelier::Xml do
11
11
  end
12
12
 
13
13
  describe Xommelier::Atom do
14
- it { should respond_to(:xmlns) }
15
- it { subject.xmlns.to_s.should == ATOM_XMLNS }
14
+ it { is_expected.to respond_to(:xmlns) }
15
+ it { expect(subject.xmlns.to_s).to eq(ATOM_XMLNS) }
16
16
  its(:schema) { should_not be_nil }
17
17
  end
data/spec/spec_helper.rb CHANGED
@@ -9,11 +9,11 @@ SPEC_ROOT = File.expand_path('../..', __FILE__)
9
9
  require 'simplecov'
10
10
  require 'bundler/setup'
11
11
  require 'rspec'
12
+ require 'rspec/its'
12
13
 
13
14
  SimpleCov.start
14
15
 
15
16
  require 'xommelier'
16
- require 'namespaced_module'
17
17
 
18
18
  #noinspection RubyResolve
19
19
  Dir[File.join(SPEC_ROOT, 'spec/support/**/*.rb')].each {|f| require f}
@@ -7,10 +7,10 @@
7
7
 
8
8
  require 'rspec'
9
9
  shared_examples 'Valid XML Document' do
10
- it { subject.class.schema.should be_present }
10
+ it { expect(subject.class.schema).to be_present }
11
11
  specify do
12
12
  begin
13
- should be_valid
13
+ is_expected.to be_valid
14
14
  rescue RSpec::Expectations::ExpectationNotMetError => e
15
15
  puts subject.to_xml
16
16
  puts subject.schema_validation_errors
data/xommelier.gemspec CHANGED
@@ -19,11 +19,15 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = %w(lib)
21
21
 
22
- s.add_dependency 'nokogiri', '~> 1.5'
23
- s.add_dependency 'activesupport', '~> 3.2.0'
24
- s.add_dependency 'activemodel', '~> 3.2.0'
25
- s.add_development_dependency 'bundler', '~> 1.3.2'
26
- s.add_development_dependency 'rake', '~> 10.0.3'
27
- s.add_development_dependency 'rspec', '~> 2.13.0'
28
- s.add_development_dependency 'simplecov', '~> 0.7.1'
22
+ s.add_dependency 'nokogiri', '~> 1.6.8'
23
+ s.add_dependency 'activesupport', '~> 4.2.2'
24
+ s.add_dependency 'activemodel'
25
+ s.add_dependency 'tzinfo', '~> 1.1'
26
+
27
+ s.add_development_dependency 'rspec', '~> 2.99.0'
28
+ s.add_development_dependency 'rspec-its', '~> 1.0.1'
29
+ s.add_development_dependency 'rake', '~> 10.4.2'
30
+ s.add_development_dependency 'yard', '~> 0.8.7.6'
31
+ s.add_development_dependency 'simplecov', '~> 0.6.1'
32
+ s.add_development_dependency 'redcarpet', '>= 3.2.3'
29
33
  end
metadata CHANGED
@@ -1,113 +1,155 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xommelier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.31
4
+ version: 0.1.32
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Semyonov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-29 00:00:00.000000000 Z
11
+ date: 2016-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
19
+ version: 1.6.8
20
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: '1.5'
26
+ version: 1.6.8
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 3.2.0
33
+ version: 4.2.2
34
34
  type: :runtime
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: 3.2.0
40
+ version: 4.2.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activemodel
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 3.2.0
47
+ version: '0'
48
48
  type: :runtime
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: 3.2.0
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bundler
56
+ name: tzinfo
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.3.2
61
+ version: '1.1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 2.99.0
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - ~>
80
+ - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: 1.3.2
82
+ version: 2.99.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-its
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.0.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.0.1
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: rake
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
- - - ~>
101
+ - - "~>"
74
102
  - !ruby/object:Gem::Version
75
- version: 10.0.3
103
+ version: 10.4.2
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - ~>
108
+ - - "~>"
81
109
  - !ruby/object:Gem::Version
82
- version: 10.0.3
110
+ version: 10.4.2
83
111
  - !ruby/object:Gem::Dependency
84
- name: rspec
112
+ name: yard
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
- - - ~>
115
+ - - "~>"
88
116
  - !ruby/object:Gem::Version
89
- version: 2.13.0
117
+ version: 0.8.7.6
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
- - - ~>
122
+ - - "~>"
95
123
  - !ruby/object:Gem::Version
96
- version: 2.13.0
124
+ version: 0.8.7.6
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: simplecov
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
- - - ~>
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.6.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.6.1
139
+ - !ruby/object:Gem::Dependency
140
+ name: redcarpet
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
102
144
  - !ruby/object:Gem::Version
103
- version: 0.7.1
145
+ version: 3.2.3
104
146
  type: :development
105
147
  prerelease: false
106
148
  version_requirements: !ruby/object:Gem::Requirement
107
149
  requirements:
108
- - - ~>
150
+ - - ">="
109
151
  - !ruby/object:Gem::Version
110
- version: 0.7.1
152
+ version: 3.2.3
111
153
  description: XML-Object Mapper with many built-in XML formats supported
112
154
  email:
113
155
  - al@semyonov.us
@@ -115,9 +157,9 @@ executables: []
115
157
  extensions: []
116
158
  extra_rdoc_files: []
117
159
  files:
118
- - .gitignore
119
- - .rspec
120
- - .travis.yml
160
+ - ".gitignore"
161
+ - ".rspec"
162
+ - ".travis.yml"
121
163
  - Gemfile
122
164
  - Guardfile
123
165
  - MIT-LICENSE
@@ -214,9 +256,9 @@ files:
214
256
  - spec/lib/xommelier/xml/element_spec.rb
215
257
  - spec/lib/xommelier/xml_spec.rb
216
258
  - spec/lib/xommelier_spec.rb
217
- - spec/namespaced_module.rb
218
259
  - spec/spec_helper.rb
219
260
  - spec/support/fixtures.rb
261
+ - spec/support/namespaced_module.rb
220
262
  - spec/support/schema_validatable.rb
221
263
  - xommelier.gemspec
222
264
  homepage: http://github.com/alsemyonov/xommelier
@@ -229,17 +271,17 @@ require_paths:
229
271
  - lib
230
272
  required_ruby_version: !ruby/object:Gem::Requirement
231
273
  requirements:
232
- - - '>='
274
+ - - ">="
233
275
  - !ruby/object:Gem::Version
234
276
  version: '0'
235
277
  required_rubygems_version: !ruby/object:Gem::Requirement
236
278
  requirements:
237
- - - '>='
279
+ - - ">="
238
280
  - !ruby/object:Gem::Version
239
281
  version: '0'
240
282
  requirements: []
241
283
  rubyforge_project: xommelier
242
- rubygems_version: 2.0.3
284
+ rubygems_version: 2.6.4
243
285
  signing_key:
244
286
  specification_version: 4
245
287
  summary: Xommelier is an XML Sommelier
@@ -270,8 +312,8 @@ test_files:
270
312
  - spec/lib/xommelier/xml/element_spec.rb
271
313
  - spec/lib/xommelier/xml_spec.rb
272
314
  - spec/lib/xommelier_spec.rb
273
- - spec/namespaced_module.rb
274
315
  - spec/spec_helper.rb
275
316
  - spec/support/fixtures.rb
317
+ - spec/support/namespaced_module.rb
276
318
  - spec/support/schema_validatable.rb
277
319
  has_rdoc: