pump 0.6.6 → 0.7.0

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: 94ff0f5cef6e535be8d383cbdc0894ad6cad3247
4
- data.tar.gz: d7ace652091d3ce66eced7bbcf69438998a4abc6
3
+ metadata.gz: 180ae744ddb9c6df1c7d7bd415f75dd5b808de18
4
+ data.tar.gz: 8b3b23f23c25dce465b72bc5eb1c84ec740a9f39
5
5
  SHA512:
6
- metadata.gz: c35d78070528961c1509f5cd2ea3d9738077b41046240bbc82c7b454561ea51df1a1cc2841f64ef43f22a2e2aabccbf8c212d8f6671b6901b24fb849b89faefd
7
- data.tar.gz: d8f8e432d713bf988ecd9484897e24df93b0eab3c40bff501e4fb6ac3b1b5cf1fc22f1f8c707f5f54b0a896a8cba8560697505dbee2f0142892490311846dcee
6
+ metadata.gz: 7a5e87c4721f61adf2b7fcf606dcff23f02daaa3d8e4c487b761989e6eff4978b429ce2e9451459a9cc98a9145d195e7b820b1d3eb6877f5f1650ec0e152de1d
7
+ data.tar.gz: d6093a04b4eade920916d7a16b1037e68c56704ac53ee53aed2a9fbe881499fe2e28214abb47b6f63009ea679e82f221fcd7b597842329081a1c18d111d02e1a
data/.gitignore CHANGED
@@ -3,7 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
- Gemfile.lock
6
+ /Gemfile.lock
7
7
  InstalledFiles
8
8
  _yardoc
9
9
  coverage
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.0.0-p247
1
+ 2.4.1
data/.travis.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  rvm:
2
- - 2.0.0
3
- - 1.9.3
2
+ - 2.4.1
3
+ - 2.3.4
4
4
  gemfile:
5
5
  - gemfiles/activesupport-4
6
- - gemfiles/activesupport-3-2
6
+ - gemfiles/activesupport-5
data/CHANGES.md CHANGED
@@ -1,6 +1,14 @@
1
1
  ### dev
2
2
 
3
- [full changelog](http://github.com/yolk/pump/compare/v0.6.6...master)
3
+ [full changelog](http://github.com/yolk/pump/compare/v0.7.0...master)
4
+
5
+ ### 0.7.0 / 2017-06-26
6
+
7
+ [full changelog](http://github.com/yolk/valvat/compare/v0.6.6...v0.7.0)
8
+
9
+ * Fixed Fixnum warning in Ruby 2.4.1
10
+ * Test against ruby 2.3 and 2.4
11
+ * Updated to OJ 3.2
4
12
 
5
13
  ### 0.6.6 / 2014-07-03
6
14
 
@@ -47,4 +55,4 @@
47
55
  [full changelog](http://github.com/yolk/valvat/compare/v0.5.1...v0.6.0)
48
56
 
49
57
  * Added JSON serialization
50
- * Added simple inheritance for encoders
58
+ * Added simple inheritance for encoders
data/Guardfile CHANGED
@@ -1,5 +1,5 @@
1
- guard 'rspec' do
2
- watch(%r{^spec/.+_spec\.rb})
3
- watch(%r{^lib/(.+)\.rb}) { |m| "spec/#{m[1]}_spec.rb" }
4
- watch('spec/spec_helper.rb') { "spec" }
5
- end
1
+ guard :rspec, cmd: "bundle exec rspec --color" do
2
+ watch(/^spec\/(.*)_spec.rb/)
3
+ watch(/^lib\/(.*)\.rb/) { |m| "spec/#{m[1]}_spec.rb" }
4
+ watch(/^spec\/spec_helper.rb/) { "spec" }
5
+ end
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'pump', path: '..'
4
+ gem 'ox'
5
+ gem 'oj'
6
+ gem 'yajl-ruby'
7
+ gem 'activemodel'
8
+ gem 'activemodel-serializers-xml'
9
+ gem 'to_json', github: 'ahacking/to_json'
@@ -0,0 +1,59 @@
1
+ GIT
2
+ remote: https://github.com/ahacking/to_json.git
3
+ revision: 6fe8a17f9652da0d29c2ef8637630f7c34977e00
4
+ specs:
5
+ to_json (0.0.4)
6
+ oj (>= 2.9.4)
7
+
8
+ PATH
9
+ remote: ..
10
+ specs:
11
+ pump (0.6.6)
12
+ activesupport (>= 4.0)
13
+ oj (>= 3.0)
14
+
15
+ GEM
16
+ remote: https://rubygems.org/
17
+ specs:
18
+ activemodel (5.1.2)
19
+ activesupport (= 5.1.2)
20
+ activemodel-serializers-xml (1.0.1)
21
+ activemodel (> 5.x)
22
+ activerecord (> 5.x)
23
+ activesupport (> 5.x)
24
+ builder (~> 3.1)
25
+ activerecord (5.1.2)
26
+ activemodel (= 5.1.2)
27
+ activesupport (= 5.1.2)
28
+ arel (~> 8.0)
29
+ activesupport (5.1.2)
30
+ concurrent-ruby (~> 1.0, >= 1.0.2)
31
+ i18n (~> 0.7)
32
+ minitest (~> 5.1)
33
+ tzinfo (~> 1.1)
34
+ arel (8.0.0)
35
+ builder (3.2.3)
36
+ concurrent-ruby (1.0.5)
37
+ i18n (0.8.4)
38
+ minitest (5.10.2)
39
+ oj (3.2.0)
40
+ ox (2.5.0)
41
+ thread_safe (0.3.6)
42
+ tzinfo (1.2.3)
43
+ thread_safe (~> 0.1)
44
+ yajl-ruby (1.3.0)
45
+
46
+ PLATFORMS
47
+ ruby
48
+
49
+ DEPENDENCIES
50
+ activemodel
51
+ activemodel-serializers-xml
52
+ oj
53
+ ox
54
+ pump!
55
+ to_json!
56
+ yajl-ruby
57
+
58
+ BUNDLED WITH
59
+ 1.15.1
data/benchmarks/encode.rb CHANGED
@@ -1,13 +1,15 @@
1
- $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
2
-
1
+ #!/usr/bin/env ruby
3
2
  require 'rubygems'
4
- require 'benchmark'
3
+ require 'bundler/setup'
5
4
 
5
+ require 'benchmark'
6
+ require 'to_json'
6
7
  require 'pump'
7
8
  require 'ox'
8
9
  require 'oj'
9
10
  require 'yajl'
10
11
  require 'active_model'
12
+ require 'activemodel-serializers-xml'
11
13
 
12
14
  class Person < Struct.new(:name, :age, :created_at)
13
15
  include ActiveModel::Serializers::Xml if defined?(ActiveModel)
@@ -24,6 +26,29 @@ pump_json = Pump::Json.new('person', [
24
26
  {:name => :name}
25
27
  ])
26
28
 
29
+ module ToJsonBench
30
+
31
+ class PeopleSerializer
32
+ include ::ToJson::Serialize
33
+
34
+ def put_person(person)
35
+ put :name, person.name
36
+ put :age, person.age
37
+ put :"created-at", person.created_at.xmlschema
38
+ end
39
+
40
+ def put_people(people)
41
+ array people do |person|
42
+ put_person person
43
+ end
44
+ end
45
+
46
+ def serialize(collection)
47
+ put_people collection
48
+ end
49
+ end
50
+ end
51
+
27
52
  # Not optimized pump
28
53
  pump = Pump::Xml.new('person', [
29
54
  {:age => :age, :attributes => {:type => 'integer'}},
@@ -92,6 +117,12 @@ Benchmark.bmbm { |x|
92
117
  }
93
118
  }
94
119
 
120
+ x.report("ToJson") {
121
+ times.times {
122
+ ToJsonBench::PeopleSerializer.json!(array)
123
+ }
124
+ }
125
+
95
126
  x.report("Pump::Xml#encode") {
96
127
  times.times {
97
128
  pump.encode(array)
@@ -1,7 +1,8 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "activemodel", "4.0"
3
+ gem "activemodel", "4.2.9"
4
4
  gem "oj"
5
5
 
6
- gem 'rspec', '>= 2.14'
7
- gem 'rake'
6
+ gem 'rspec'
7
+ gem 'rspec-its'
8
+ gem 'rake'
@@ -0,0 +1,8 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "activemodel", ">=5.0"
4
+ gem "oj"
5
+
6
+ gem 'rspec'
7
+ gem 'rspec-its'
8
+ gem 'rake'
data/lib/pump/json.rb CHANGED
@@ -8,9 +8,11 @@ module Pump
8
8
  private
9
9
 
10
10
  OJ_OPTIONS = {
11
- :mode => :compat,
11
+ :mode => :custom,
12
+ :second_precision => 0,
12
13
  :time_format => :xmlschema,
13
- :second_precision => 0
14
+ :create_additions => false,
15
+ :use_as_json => true
14
16
  }
15
17
 
16
18
  def compile_string
@@ -145,4 +147,4 @@ module Pump
145
147
  name.to_s.underscore
146
148
  end
147
149
  end
148
- end
150
+ end
data/lib/pump/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pump
2
- VERSION = "0.6.6"
2
+ VERSION = "0.7.0"
3
3
  end
data/lib/pump/xml.rb CHANGED
@@ -72,7 +72,7 @@ module Pump
72
72
  VALID_XML_CHARS = Regexp.new('\A['+
73
73
  VALID_CHAR.map { |item|
74
74
  case item
75
- when Fixnum
75
+ when 0.class
76
76
  [item].pack('U').force_encoding('utf-8')
77
77
  when Range
78
78
  [item.first, '-'.ord, item.last].pack('UUU').force_encoding('utf-8')
@@ -96,4 +96,4 @@ end
96
96
 
97
97
  require "pump/xml/tag"
98
98
  require "pump/xml/value"
99
- require "pump/xml/tag_array"
99
+ require "pump/xml/tag_array"
data/pump.gemspec CHANGED
@@ -18,7 +18,8 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.add_dependency "activesupport", ">=3.2"
22
- gem.add_dependency "oj", ">=2.0"
23
- gem.add_development_dependency "rspec", ">= 2.12.0"
21
+ gem.add_dependency "activesupport", ">= 4.0"
22
+ gem.add_dependency "oj", ">= 3.0"
23
+ gem.add_development_dependency "rspec", ">= 3.2"
24
+ gem.add_development_dependency "rspec-its"
24
25
  end
@@ -40,22 +40,22 @@ end
40
40
 
41
41
  describe Pump::Array do
42
42
  it "should extend ::Array by default with pump_to_xml" do
43
- [].respond_to?(:pump_to_xml).should eql(true)
43
+ expect([].respond_to?(:pump_to_xml)).to eql(true)
44
44
  end
45
45
 
46
46
  it "should extend ::Array by default with pump_to_json" do
47
- [].respond_to?(:pump_to_json).should eql(true)
47
+ expect([].respond_to?(:pump_to_json)).to eql(true)
48
48
  end
49
49
 
50
50
  context "with objects without include" do
51
51
  subject{ [ArrayObjectWithoutInclude.new] }
52
52
 
53
53
  it "should return default to_xml" do
54
- subject.pump_to_xml.should eql(subject.to_xml)
54
+ expect(subject.pump_to_xml).to eql(subject.to_xml)
55
55
  end
56
56
 
57
57
  it "should return default to_json" do
58
- subject.pump_to_json.should eql(subject.to_json)
58
+ expect(subject.pump_to_json).to eql(subject.to_json)
59
59
  end
60
60
  end
61
61
 
@@ -63,11 +63,11 @@ describe Pump::Array do
63
63
  subject{ [ArrayObjectWithInclude.new] }
64
64
 
65
65
  it "should return default to_xml" do
66
- subject.pump_to_xml.should eql(subject.to_xml)
66
+ expect(subject.pump_to_xml).to eql(subject.to_xml)
67
67
  end
68
68
 
69
69
  it "should return default to_json" do
70
- subject.pump_to_json.should eql(subject.to_json)
70
+ expect(subject.pump_to_json).to eql(subject.to_json)
71
71
  end
72
72
  end
73
73
 
@@ -75,31 +75,31 @@ describe Pump::Array do
75
75
  subject{ [ArrayObject.new] }
76
76
 
77
77
  it "should encode with default encoder" do
78
- subject.pump_to_xml.should eql("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<array-objects type=\"array\">\n <array-object>\n <name>Tintin</name>\n </array-object>\n</array-objects>\n")
78
+ expect(subject.pump_to_xml).to eql("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<array-objects type=\"array\">\n <array-object>\n <name>Tintin</name>\n </array-object>\n</array-objects>\n")
79
79
  end
80
80
 
81
81
  it "should encode with specified encoder" do
82
- subject.pump_to_xml(:set => :with_age).should eql("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<array-objects type=\"array\">\n <array-object>\n <name>Tintin</name>\n <age type=\"integer\">27</age>\n </array-object>\n</array-objects>\n")
82
+ expect(subject.pump_to_xml(:set => :with_age)).to eql("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<array-objects type=\"array\">\n <array-object>\n <name>Tintin</name>\n <age type=\"integer\">27</age>\n </array-object>\n</array-objects>\n")
83
83
  end
84
84
 
85
85
  it "should encode with default encoder on unknown set" do
86
- subject.pump_to_xml(:set => :bla).should eql("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<array-objects type=\"array\">\n <array-object>\n <name>Tintin</name>\n </array-object>\n</array-objects>\n")
86
+ expect(subject.pump_to_xml(:set => :bla)).to eql("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<array-objects type=\"array\">\n <array-object>\n <name>Tintin</name>\n </array-object>\n</array-objects>\n")
87
87
  end
88
88
 
89
89
  it "should encode json with default encoder" do
90
- subject.pump_to_json.should eql("[{\"array_object\":{\"name\":\"Tintin\"}}]")
90
+ expect(subject.pump_to_json).to eql("[{\"array_object\":{\"name\":\"Tintin\"}}]")
91
91
  end
92
92
 
93
93
  it "should encode json with specified encoder" do
94
- subject.pump_to_json(:set => :with_age).should eql("[{\"array_object\":{\"name\":\"Tintin\",\"age\":27}}]")
94
+ expect(subject.pump_to_json(:set => :with_age)).to eql("[{\"array_object\":{\"name\":\"Tintin\",\"age\":27}}]")
95
95
  end
96
96
 
97
97
  it "should encode json with default encoder on unknown set" do
98
- subject.pump_to_json(:set => :bla).should eql("[{\"array_object\":{\"name\":\"Tintin\"}}]")
98
+ expect(subject.pump_to_json(:set => :bla)).to eql("[{\"array_object\":{\"name\":\"Tintin\"}}]")
99
99
  end
100
100
 
101
101
  it "should pass down options to encoder" do
102
- subject.pump_to_json(:exclude_root_in_json => true).should eql("[{\"name\":\"Tintin\"}]")
102
+ expect(subject.pump_to_json(:exclude_root_in_json => true)).to eql("[{\"name\":\"Tintin\"}]")
103
103
  end
104
104
  end
105
105
  end
@@ -6,7 +6,7 @@ describe Pump::Collection do
6
6
  describe ".new" do
7
7
  it "should not accept any arguments" do
8
8
  subject
9
- lambda{ Pump::Collection.new("") }.should raise_error(ArgumentError)
9
+ expect{ Pump::Collection.new("") }.to raise_error(ArgumentError)
10
10
  end
11
11
 
12
12
  its(:size) { should eql(0) }
@@ -15,43 +15,43 @@ describe Pump::Collection do
15
15
  describe "#add" do
16
16
  it "should add entry" do
17
17
  subject.add(:set_name, :xml, :value)
18
- subject.size.should eql(1)
18
+ expect(subject.size).to eql(1)
19
19
  end
20
20
 
21
21
  it "should allow different formats" do
22
22
  subject.add(:set_name, :json, :value)
23
- subject.size.should eql(1)
23
+ expect(subject.size).to eql(1)
24
24
  end
25
25
 
26
26
  it "should default to :default set" do
27
27
  subject.add(nil, :xml, :value)
28
- subject.get(:default, :xml).should eql(:value)
28
+ expect(subject.get(:default, :xml)).to eql(:value)
29
29
  end
30
30
  end
31
31
 
32
32
  describe "#get" do
33
33
  it "should return nil on unknown entry" do
34
- subject.get(:set_name, :xml).should eql(nil)
35
- subject.get(:default, :xml).should eql(nil)
36
- subject.get(nil, :xml).should eql(nil)
37
- subject.get(:default, :json).should eql(nil)
34
+ expect(subject.get(:set_name, :xml)).to eql(nil)
35
+ expect(subject.get(:default, :xml)).to eql(nil)
36
+ expect(subject.get(nil, :xml)).to eql(nil)
37
+ expect(subject.get(:default, :json)).to eql(nil)
38
38
  end
39
39
 
40
40
  context "when entries are added" do
41
41
  before{ subject.add(:set_name, :xml, :value); subject.add(:default, :xml, :value2) }
42
42
 
43
43
  it "should return given value" do
44
- subject.get(:set_name, :xml).should eql(:value)
45
- subject.get(:default, :xml).should eql(:value2)
44
+ expect(subject.get(:set_name, :xml)).to eql(:value)
45
+ expect(subject.get(:default, :xml)).to eql(:value2)
46
46
  end
47
47
 
48
48
  it "should return nil with wrong format" do
49
- subject.get(:set_name, :json).should eql(nil)
50
- subject.get(:default, :json).should eql(nil)
49
+ expect(subject.get(:set_name, :json)).to eql(nil)
50
+ expect(subject.get(:default, :json)).to eql(nil)
51
51
  end
52
52
 
53
53
  it "should default to :default on unknwon set" do
54
- subject.get(:unknown, :xml).should eql(:value2)
54
+ expect(subject.get(:unknown, :xml)).to eql(:value2)
55
55
  end
56
56
  end
57
57
  end
@@ -5,8 +5,8 @@ describe Pump::Dsl do
5
5
 
6
6
  describe ".new" do
7
7
  it "requires one block" do
8
- lambda{ Pump::Dsl.new }.should raise_error(ArgumentError)
9
- lambda{ subject }.should_not raise_error
8
+ expect{ Pump::Dsl.new }.to raise_error(ArgumentError)
9
+ expect{ subject }.not_to raise_error
10
10
  end
11
11
  end
12
12
 
@@ -3,10 +3,10 @@ require 'spec_helper'
3
3
  describe Pump::Encoder do
4
4
  describe ".new" do
5
5
  it "requires two parameters or one and a block" do
6
- lambda{ Pump::Encoder.new }.should raise_error(ArgumentError)
7
- lambda{ Pump::Encoder.new('record') }.should raise_error(ArgumentError)
8
- lambda{ Pump::Encoder.new('record', []) }.should_not raise_error
9
- lambda{ Pump::Encoder.new('record') {} }.should_not raise_error
6
+ expect{ Pump::Encoder.new }.to raise_error(ArgumentError)
7
+ expect{ Pump::Encoder.new('record') }.to raise_error(ArgumentError)
8
+ expect{ Pump::Encoder.new('record', []) }.not_to raise_error
9
+ expect{ Pump::Encoder.new('record') {} }.not_to raise_error
10
10
  end
11
11
 
12
12
  describe "with block given" do
@@ -30,7 +30,7 @@ describe Pump::Encoder do
30
30
 
31
31
  it "leaves base config untouched" do
32
32
  subject
33
- base.encoder_config.should eql([{:name => :name}, {:role => :role}])
33
+ expect(base.encoder_config).to eql([{:name => :name}, {:role => :role}])
34
34
  end
35
35
  end
36
36
 
@@ -40,7 +40,7 @@ describe Pump::Encoder do
40
40
 
41
41
  it "leaves base config untouched" do
42
42
  subject
43
- base.encoder_config.should eql([{:name => :name}, {:role => :role}])
43
+ expect(base.encoder_config).to eql([{:name => :name}, {:role => :role}])
44
44
  end
45
45
  end
46
46
 
@@ -50,7 +50,7 @@ describe Pump::Encoder do
50
50
 
51
51
  it "leaves base config untouched" do
52
52
  subject
53
- base.encoder_config.should eql([{:name => :name}, {:role => :role}])
53
+ expect(base.encoder_config).to eql([{:name => :name}, {:role => :role}])
54
54
  end
55
55
  end
56
56
 
@@ -65,7 +65,7 @@ describe Pump::Encoder do
65
65
 
66
66
  it "leaves base config untouched" do
67
67
  subject
68
- base.encoder_config.should eql([{:name => :name}, {:role => :role}])
68
+ expect(base.encoder_config).to eql([{:name => :name}, {:role => :role}])
69
69
  end
70
70
  end
71
71
 
@@ -76,7 +76,7 @@ describe Pump::Encoder do
76
76
 
77
77
  it "leaves base options untouched" do
78
78
  subject
79
- base.encoder_options.should eql({:option => true})
79
+ expect(base.encoder_options).to eql({:option => true})
80
80
  end
81
81
  end
82
82
  end
@@ -88,7 +88,7 @@ describe Pump::Encoder do
88
88
 
89
89
  it "leaves base options untouched" do
90
90
  subject
91
- base.encoder_options.should eql({:option => true})
91
+ expect(base.encoder_options).to eql({:option => true})
92
92
  end
93
93
  end
94
94
  end