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 +1 -1
- data/dynport_tools.gemspec +7 -5
- data/lib/dynport_tools/differ.rb +64 -0
- data/lib/dynport_tools.rb +2 -0
- data/spec/{differ_spec.rb → dynport_tools/differ_spec.rb} +7 -7
- metadata +45 -43
- data/lib/differ.rb +0 -62
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/dynport_tools.gemspec
CHANGED
@@ -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.
|
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-
|
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
|
-
"
|
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.
|
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
@@ -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:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
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-
|
18
|
+
date: 2011-08-15 00:00:00 +02:00
|
19
|
+
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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
|