dynport_tools 0.1.0 → 0.1.1

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{dynport_tools}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tobias Schwab"]
12
- s.date = %q{2011-08-08}
12
+ s.date = %q{2011-08-15}
13
13
  s.description = %q{Collection of various tools}
14
14
  s.email = %q{tobias.schwab@dynport.de}
15
15
  s.extra_rdoc_files = [
@@ -24,12 +24,14 @@ Gem::Specification.new do |s|
24
24
  "LICENSE.txt",
25
25
  "README.rdoc",
26
26
  "Rakefile",
27
+ "VERSION",
27
28
  "autotest/discover.rb",
28
- "lib/differ.rb",
29
+ "dynport_tools.gemspec",
29
30
  "lib/dynport_tools.rb",
31
+ "lib/dynport_tools/differ.rb",
30
32
  "lib/have_attributes.rb",
31
33
  "lib/xml_file.rb",
32
- "spec/differ_spec.rb",
34
+ "spec/dynport_tools/differ_spec.rb",
33
35
  "spec/dynport_tools_spec.rb",
34
36
  "spec/fixtures/file_a.xml",
35
37
  "spec/spec_helper.rb",
@@ -38,7 +40,7 @@ Gem::Specification.new do |s|
38
40
  s.homepage = %q{http://github.com/tobstarr/dynport_tools}
39
41
  s.licenses = ["MIT"]
40
42
  s.require_paths = ["lib"]
41
- s.rubygems_version = %q{1.7.2}
43
+ s.rubygems_version = %q{1.6.2}
42
44
  s.summary = %q{Collection of various tools}
43
45
 
44
46
  if s.respond_to? :specification_version then
@@ -0,0 +1,64 @@
1
+ module DynportTools
2
+ class Differ
3
+ attr_accessor :diff_all, :use_return
4
+
5
+
6
+ def initialize(options = {})
7
+ self.diff_all = options[:diff_all] != false
8
+ self.use_return = options[:use_return] == true
9
+ end
10
+
11
+ def diff(a, b)
12
+ if both?(a, b, Hash)
13
+ diff_hash_values(a, b, a.keys + (self.diff_all ? b.keys : []))
14
+ elsif both?(a, b, Array)
15
+ diff_hash_values(a, b, all_array_indexes(a, b))
16
+ else
17
+ [a, b] if a != b
18
+ end
19
+ end
20
+
21
+ def diff_to_message_lines(the_diff, prefix = nil)
22
+ if the_diff.is_a?(Array)
23
+ ["expected #{expected_value(the_diff.first)} to be #{expected_value(the_diff.at(1))}"]
24
+ elsif the_diff.is_a?(Hash)
25
+ the_diff.map do |key, diff|
26
+ if diff.is_a?(Array)
27
+ "expected #{merge_prefixes(prefix, key)} to #{use_return ? "return" : "be"} #{expected_value(diff.first)} but #{use_return ? "did" : "was"} #{expected_value(diff.at(1))}"
28
+ else
29
+ diff_to_message_lines(diff, merge_prefixes(prefix, key))
30
+ end
31
+ end.flatten
32
+ else
33
+ []
34
+ end
35
+ end
36
+
37
+ private
38
+ def expected_value(value)
39
+ "<#{value.inspect}>"
40
+ end
41
+
42
+ def all_array_indexes(a, b)
43
+ 0.upto([a.length, b.length].max - 1).to_a
44
+ end
45
+
46
+ def diff_hash_values(a, b, keys)
47
+ ret = keys.uniq.inject({}) do |hash, key|
48
+ if diff = diff(a[key], b[key])
49
+ hash[key] = diff
50
+ end
51
+ hash
52
+ end
53
+ ret.empty? ? nil : ret
54
+ end
55
+
56
+ def both?(a, b, clazz)
57
+ a.is_a?(clazz) && b.is_a?(clazz)
58
+ end
59
+
60
+ def merge_prefixes(prefix, key)
61
+ prefix ? "#{prefix}[#{key}]" : key
62
+ end
63
+ end
64
+ end
data/lib/dynport_tools.rb CHANGED
@@ -0,0 +1,2 @@
1
+ module DynportTools
2
+ end
@@ -1,17 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
- require "differ"
3
+ require "dynport_tools/differ"
4
4
 
5
- describe Differ do
6
- let(:differ) { Differ.new }
5
+ describe DynportTools::Differ do
6
+ let(:differ) { DynportTools::Differ.new }
7
7
 
8
8
  describe "#initialize" do
9
9
  it "sets diff_all to true by default" do
10
- Differ.new.diff_all.should == true
10
+ DynportTools::Differ.new.diff_all.should == true
11
11
  end
12
12
 
13
13
  it "sets diff_all to false when initialized with that option" do
14
- Differ.new(:diff_all => false).diff_all.should == false
14
+ DynportTools::Differ.new(:diff_all => false).diff_all.should == false
15
15
  end
16
16
  end
17
17
 
@@ -132,10 +132,10 @@ describe Differ do
132
132
  end
133
133
 
134
134
  it "returns multiple messages" do
135
- differ.diff_to_message_lines({ :a => { :b => [3, 4], :c => [nil, 1] } }, "c").should == [
135
+ differ.diff_to_message_lines({ :a => { :b => [3, 4], :c => [nil, 1] } }, "c").sort.should == [
136
136
  "expected c[a][b] to be <3> but was <4>",
137
137
  "expected c[a][c] to be <nil> but was <1>",
138
- ]
138
+ ].sort
139
139
  end
140
140
  end
141
141
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynport_tools
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tobias Schwab
@@ -15,10 +15,13 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-08 00:00:00 Z
18
+ date: 2011-08-15 00:00:00 +02:00
19
+ default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ name: nokogiri
23
+ prerelease: false
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
22
25
  none: false
23
26
  requirements:
24
27
  - - ">="
@@ -27,12 +30,12 @@ dependencies:
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
30
- version_requirements: *id001
31
- name: nokogiri
32
- prerelease: false
33
33
  type: :runtime
34
+ requirement: *id001
34
35
  - !ruby/object:Gem::Dependency
35
- requirement: &id002 !ruby/object:Gem::Requirement
36
+ name: rspec
37
+ prerelease: false
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
36
39
  none: false
37
40
  requirements:
38
41
  - - ~>
@@ -43,12 +46,12 @@ dependencies:
43
46
  - 3
44
47
  - 0
45
48
  version: 2.3.0
46
- version_requirements: *id002
47
- name: rspec
48
- prerelease: false
49
49
  type: :development
50
+ requirement: *id002
50
51
  - !ruby/object:Gem::Dependency
51
- requirement: &id003 !ruby/object:Gem::Requirement
52
+ name: bundler
53
+ prerelease: false
54
+ version_requirements: &id003 !ruby/object:Gem::Requirement
52
55
  none: false
53
56
  requirements:
54
57
  - - ~>
@@ -59,12 +62,12 @@ dependencies:
59
62
  - 0
60
63
  - 0
61
64
  version: 1.0.0
62
- version_requirements: *id003
63
- name: bundler
64
- prerelease: false
65
65
  type: :development
66
+ requirement: *id003
66
67
  - !ruby/object:Gem::Dependency
67
- requirement: &id004 !ruby/object:Gem::Requirement
68
+ name: jeweler
69
+ prerelease: false
70
+ version_requirements: &id004 !ruby/object:Gem::Requirement
68
71
  none: false
69
72
  requirements:
70
73
  - - ~>
@@ -75,12 +78,12 @@ dependencies:
75
78
  - 6
76
79
  - 4
77
80
  version: 1.6.4
78
- version_requirements: *id004
79
- name: jeweler
80
- prerelease: false
81
81
  type: :development
82
+ requirement: *id004
82
83
  - !ruby/object:Gem::Dependency
83
- requirement: &id005 !ruby/object:Gem::Requirement
84
+ name: rcov
85
+ prerelease: false
86
+ version_requirements: &id005 !ruby/object:Gem::Requirement
84
87
  none: false
85
88
  requirements:
86
89
  - - ">="
@@ -89,12 +92,12 @@ dependencies:
89
92
  segments:
90
93
  - 0
91
94
  version: "0"
92
- version_requirements: *id005
93
- name: rcov
94
- prerelease: false
95
95
  type: :development
96
+ requirement: *id005
96
97
  - !ruby/object:Gem::Dependency
97
- requirement: &id006 !ruby/object:Gem::Requirement
98
+ name: ZenTest
99
+ prerelease: false
100
+ version_requirements: &id006 !ruby/object:Gem::Requirement
98
101
  none: false
99
102
  requirements:
100
103
  - - "="
@@ -105,12 +108,12 @@ dependencies:
105
108
  - 5
106
109
  - 0
107
110
  version: 4.5.0
108
- version_requirements: *id006
109
- name: ZenTest
110
- prerelease: false
111
111
  type: :development
112
+ requirement: *id006
112
113
  - !ruby/object:Gem::Dependency
113
- requirement: &id007 !ruby/object:Gem::Requirement
114
+ name: autotest
115
+ prerelease: false
116
+ version_requirements: &id007 !ruby/object:Gem::Requirement
114
117
  none: false
115
118
  requirements:
116
119
  - - ">="
@@ -119,12 +122,12 @@ dependencies:
119
122
  segments:
120
123
  - 0
121
124
  version: "0"
122
- version_requirements: *id007
123
- name: autotest
124
- prerelease: false
125
125
  type: :development
126
+ requirement: *id007
126
127
  - !ruby/object:Gem::Dependency
127
- requirement: &id008 !ruby/object:Gem::Requirement
128
+ name: autotest-growl
129
+ prerelease: false
130
+ version_requirements: &id008 !ruby/object:Gem::Requirement
128
131
  none: false
129
132
  requirements:
130
133
  - - ">="
@@ -133,12 +136,12 @@ dependencies:
133
136
  segments:
134
137
  - 0
135
138
  version: "0"
136
- version_requirements: *id008
137
- name: autotest-growl
138
- prerelease: false
139
139
  type: :development
140
+ requirement: *id008
140
141
  - !ruby/object:Gem::Dependency
141
- requirement: &id009 !ruby/object:Gem::Requirement
142
+ name: ruby-debug
143
+ prerelease: false
144
+ version_requirements: &id009 !ruby/object:Gem::Requirement
142
145
  none: false
143
146
  requirements:
144
147
  - - ">="
@@ -147,10 +150,8 @@ dependencies:
147
150
  segments:
148
151
  - 0
149
152
  version: "0"
150
- version_requirements: *id009
151
- name: ruby-debug
152
- prerelease: false
153
153
  type: :development
154
+ requirement: *id009
154
155
  description: Collection of various tools
155
156
  email: tobias.schwab@dynport.de
156
157
  executables: []
@@ -171,15 +172,16 @@ files:
171
172
  - VERSION
172
173
  - autotest/discover.rb
173
174
  - dynport_tools.gemspec
174
- - lib/differ.rb
175
175
  - lib/dynport_tools.rb
176
+ - lib/dynport_tools/differ.rb
176
177
  - lib/have_attributes.rb
177
178
  - lib/xml_file.rb
178
- - spec/differ_spec.rb
179
+ - spec/dynport_tools/differ_spec.rb
179
180
  - spec/dynport_tools_spec.rb
180
181
  - spec/fixtures/file_a.xml
181
182
  - spec/spec_helper.rb
182
183
  - spec/xml_file_spec.rb
184
+ has_rdoc: true
183
185
  homepage: http://github.com/tobstarr/dynport_tools
184
186
  licenses:
185
187
  - MIT
@@ -209,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
211
  requirements: []
210
212
 
211
213
  rubyforge_project:
212
- rubygems_version: 1.7.2
214
+ rubygems_version: 1.6.2
213
215
  signing_key:
214
216
  specification_version: 3
215
217
  summary: Collection of various tools
data/lib/differ.rb DELETED
@@ -1,62 +0,0 @@
1
- class Differ
2
- attr_accessor :diff_all, :use_return
3
-
4
-
5
- def initialize(options = {})
6
- self.diff_all = options[:diff_all] != false
7
- self.use_return = options[:use_return] == true
8
- end
9
-
10
- def diff(a, b)
11
- if both?(a, b, Hash)
12
- diff_hash_values(a, b, a.keys + (self.diff_all ? b.keys : []))
13
- elsif both?(a, b, Array)
14
- diff_hash_values(a, b, all_array_indexes(a, b))
15
- else
16
- [a, b] if a != b
17
- end
18
- end
19
-
20
- def diff_to_message_lines(the_diff, prefix = nil)
21
- if the_diff.is_a?(Array)
22
- ["expected #{expected_value(the_diff.first)} to be #{expected_value(the_diff.at(1))}"]
23
- elsif the_diff.is_a?(Hash)
24
- the_diff.map do |key, diff|
25
- if diff.is_a?(Array)
26
- "expected #{merge_prefixes(prefix, key)} to #{use_return ? "return" : "be"} #{expected_value(diff.first)} but #{use_return ? "did" : "was"} #{expected_value(diff.at(1))}"
27
- else
28
- diff_to_message_lines(diff, merge_prefixes(prefix, key))
29
- end
30
- end.flatten
31
- else
32
- []
33
- end
34
- end
35
-
36
- private
37
- def expected_value(value)
38
- "<#{value.inspect}>"
39
- end
40
-
41
- def all_array_indexes(a, b)
42
- 0.upto([a.length, b.length].max - 1).to_a
43
- end
44
-
45
- def diff_hash_values(a, b, keys)
46
- ret = keys.uniq.inject({}) do |hash, key|
47
- if diff = diff(a[key], b[key])
48
- hash[key] = diff
49
- end
50
- hash
51
- end
52
- ret.empty? ? nil : ret
53
- end
54
-
55
- def both?(a, b, clazz)
56
- a.is_a?(clazz) && b.is_a?(clazz)
57
- end
58
-
59
- def merge_prefixes(prefix, key)
60
- prefix ? "#{prefix}[#{key}]" : key
61
- end
62
- end