dynport_tools 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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