dynport_tools 0.2.10 → 0.2.11
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/Gemfile +2 -0
- data/Gemfile.lock +3 -0
- data/VERSION +1 -1
- data/dynport_tools.gemspec +8 -2
- data/lib/dynport_tools.rb +2 -0
- data/lib/dynport_tools/differ.rb +33 -0
- data/spec/dynport_tools/differ_spec.rb +24 -2
- metadata +50 -22
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -33,6 +33,7 @@ GEM
|
|
33
33
|
ruby-debug-base (~> 0.10.4.0)
|
34
34
|
ruby-debug-base (0.10.4)
|
35
35
|
linecache (>= 0.3)
|
36
|
+
term-ansicolor (1.0.5)
|
36
37
|
timecop (0.3.5)
|
37
38
|
typhoeus (0.2.4)
|
38
39
|
mime-types
|
@@ -46,11 +47,13 @@ DEPENDENCIES
|
|
46
47
|
autotest
|
47
48
|
autotest-growl
|
48
49
|
bundler (~> 1.0.0)
|
50
|
+
diff-lcs
|
49
51
|
jeweler (~> 1.6.4)
|
50
52
|
nokogiri
|
51
53
|
rcov
|
52
54
|
redis
|
53
55
|
rspec (~> 2.3.0)
|
54
56
|
ruby-debug
|
57
|
+
term-ansicolor
|
55
58
|
timecop
|
56
59
|
typhoeus
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.11
|
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.2.
|
8
|
+
s.version = "0.2.11"
|
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-25}
|
13
13
|
s.description = %q{Collection of various tools}
|
14
14
|
s.email = %q{tobias.schwab@dynport.de}
|
15
15
|
s.executables = ["xmldiff", "redis_dumper"]
|
@@ -70,6 +70,8 @@ Gem::Specification.new do |s|
|
|
70
70
|
s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
|
71
71
|
s.add_runtime_dependency(%q<redis>, [">= 0"])
|
72
72
|
s.add_runtime_dependency(%q<typhoeus>, [">= 0"])
|
73
|
+
s.add_runtime_dependency(%q<term-ansicolor>, [">= 0"])
|
74
|
+
s.add_runtime_dependency(%q<diff-lcs>, [">= 0"])
|
73
75
|
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
74
76
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
75
77
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
@@ -83,6 +85,8 @@ Gem::Specification.new do |s|
|
|
83
85
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
84
86
|
s.add_dependency(%q<redis>, [">= 0"])
|
85
87
|
s.add_dependency(%q<typhoeus>, [">= 0"])
|
88
|
+
s.add_dependency(%q<term-ansicolor>, [">= 0"])
|
89
|
+
s.add_dependency(%q<diff-lcs>, [">= 0"])
|
86
90
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
87
91
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
88
92
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
@@ -97,6 +101,8 @@ Gem::Specification.new do |s|
|
|
97
101
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
98
102
|
s.add_dependency(%q<redis>, [">= 0"])
|
99
103
|
s.add_dependency(%q<typhoeus>, [">= 0"])
|
104
|
+
s.add_dependency(%q<term-ansicolor>, [">= 0"])
|
105
|
+
s.add_dependency(%q<diff-lcs>, [">= 0"])
|
100
106
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
101
107
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
102
108
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
data/lib/dynport_tools.rb
CHANGED
data/lib/dynport_tools/differ.rb
CHANGED
@@ -33,8 +33,41 @@ module DynportTools
|
|
33
33
|
[]
|
34
34
|
end
|
35
35
|
end
|
36
|
+
|
37
|
+
def diff_strings(a, b)
|
38
|
+
chunks = []
|
39
|
+
last = 0
|
40
|
+
Diff::LCS.diff(a, b).each do |group|
|
41
|
+
old_s = []
|
42
|
+
new_s = []
|
43
|
+
removed_elements(group).each_with_index do |c, i|
|
44
|
+
chunks << a[last..(c.position - 1)] if i == 0
|
45
|
+
old_s << c.element
|
46
|
+
last = c.position + 1
|
47
|
+
end
|
48
|
+
added_elements(group).each_with_index do |c, i|
|
49
|
+
if i == 0 && removed_elements(group).empty?
|
50
|
+
chunks << a[last..(c.position - 1)]
|
51
|
+
last = c.position
|
52
|
+
end
|
53
|
+
new_s << c.element
|
54
|
+
end
|
55
|
+
if (old_s.join("").length > 0 || new_s.join("").length > 0)
|
56
|
+
chunks << Term::ANSIColor.bold("<#{Term::ANSIColor.red(old_s.join(""))}|#{Term::ANSIColor.green(new_s.join(""))}>")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
chunks.join("")
|
60
|
+
end
|
36
61
|
|
37
62
|
private
|
63
|
+
def removed_elements(group)
|
64
|
+
group.select { |c| c.action == "-" }
|
65
|
+
end
|
66
|
+
|
67
|
+
def added_elements(group)
|
68
|
+
group.select { |c| c.action == "+" }
|
69
|
+
end
|
70
|
+
|
38
71
|
def expected_value(value)
|
39
72
|
"<#{value.inspect}>"
|
40
73
|
end
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
require "dynport_tools/differ"
|
4
|
-
|
5
3
|
describe DynportTools::Differ do
|
6
4
|
let(:differ) { DynportTools::Differ.new }
|
7
5
|
|
6
|
+
def uncolor(str)
|
7
|
+
str.gsub(/\e\[(\d+)m/, '')
|
8
|
+
end
|
9
|
+
|
8
10
|
describe "#initialize" do
|
9
11
|
it "sets diff_all to true by default" do
|
10
12
|
DynportTools::Differ.new.diff_all.should == true
|
@@ -15,6 +17,26 @@ describe DynportTools::Differ do
|
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
20
|
+
describe "#diff_strings" do
|
21
|
+
it "diffs two strings" do
|
22
|
+
a = %("#!/bin/sh\nssh some.server 'cd /path/to/project && script/runner -e production_slave \"do something\"")
|
23
|
+
b = %("#!/bin/sh\nssh some.server \"cd /path/to/project && ./script/runner -e production 'do something'\")
|
24
|
+
uncolor(differ.diff_strings(a, b)).should == %("#!/bin/sh\nssh some.server <'|">cd /path/to/project && <|./>script/runner -e production<_slave|> <"|'>do something<"|'>")
|
25
|
+
end
|
26
|
+
|
27
|
+
it "diffes simple strings" do
|
28
|
+
a = %(-e production_slave "something)
|
29
|
+
b = %(-e production "something)
|
30
|
+
uncolor(differ.diff_strings(a, b)).should == %(-e production<_slave|> "something)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "diffs a little bit more complicated string" do
|
34
|
+
a = %(-e production_slave "something)
|
35
|
+
b = %(-e production 'something)
|
36
|
+
uncolor(differ.diff_strings(a, b)).should == %(-e production<_slave|> <"|'>something)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
18
40
|
describe "diffing two hashes" do
|
19
41
|
it "returns true when both hashes are equal" do
|
20
42
|
hash = { :a => 1 }
|
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: 1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 11
|
10
|
+
version: 0.2.11
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tobias Schwab
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-08-
|
18
|
+
date: 2011-08-25 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -61,9 +61,37 @@ dependencies:
|
|
61
61
|
type: :runtime
|
62
62
|
requirement: *id003
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
64
|
+
name: term-ansicolor
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
type: :runtime
|
76
|
+
requirement: *id004
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: diff-lcs
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
type: :runtime
|
90
|
+
requirement: *id005
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: rspec
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
67
95
|
none: false
|
68
96
|
requirements:
|
69
97
|
- - ~>
|
@@ -75,11 +103,11 @@ dependencies:
|
|
75
103
|
- 0
|
76
104
|
version: 2.3.0
|
77
105
|
type: :development
|
78
|
-
requirement: *
|
106
|
+
requirement: *id006
|
79
107
|
- !ruby/object:Gem::Dependency
|
80
108
|
name: bundler
|
81
109
|
prerelease: false
|
82
|
-
version_requirements: &
|
110
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
83
111
|
none: false
|
84
112
|
requirements:
|
85
113
|
- - ~>
|
@@ -91,11 +119,11 @@ dependencies:
|
|
91
119
|
- 0
|
92
120
|
version: 1.0.0
|
93
121
|
type: :development
|
94
|
-
requirement: *
|
122
|
+
requirement: *id007
|
95
123
|
- !ruby/object:Gem::Dependency
|
96
124
|
name: jeweler
|
97
125
|
prerelease: false
|
98
|
-
version_requirements: &
|
126
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
99
127
|
none: false
|
100
128
|
requirements:
|
101
129
|
- - ~>
|
@@ -107,11 +135,11 @@ dependencies:
|
|
107
135
|
- 4
|
108
136
|
version: 1.6.4
|
109
137
|
type: :development
|
110
|
-
requirement: *
|
138
|
+
requirement: *id008
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: rcov
|
113
141
|
prerelease: false
|
114
|
-
version_requirements: &
|
142
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
115
143
|
none: false
|
116
144
|
requirements:
|
117
145
|
- - ">="
|
@@ -121,11 +149,11 @@ dependencies:
|
|
121
149
|
- 0
|
122
150
|
version: "0"
|
123
151
|
type: :development
|
124
|
-
requirement: *
|
152
|
+
requirement: *id009
|
125
153
|
- !ruby/object:Gem::Dependency
|
126
154
|
name: ZenTest
|
127
155
|
prerelease: false
|
128
|
-
version_requirements: &
|
156
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
129
157
|
none: false
|
130
158
|
requirements:
|
131
159
|
- - "="
|
@@ -137,11 +165,11 @@ dependencies:
|
|
137
165
|
- 0
|
138
166
|
version: 4.5.0
|
139
167
|
type: :development
|
140
|
-
requirement: *
|
168
|
+
requirement: *id010
|
141
169
|
- !ruby/object:Gem::Dependency
|
142
170
|
name: autotest
|
143
171
|
prerelease: false
|
144
|
-
version_requirements: &
|
172
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
145
173
|
none: false
|
146
174
|
requirements:
|
147
175
|
- - ">="
|
@@ -151,11 +179,11 @@ dependencies:
|
|
151
179
|
- 0
|
152
180
|
version: "0"
|
153
181
|
type: :development
|
154
|
-
requirement: *
|
182
|
+
requirement: *id011
|
155
183
|
- !ruby/object:Gem::Dependency
|
156
184
|
name: autotest-growl
|
157
185
|
prerelease: false
|
158
|
-
version_requirements: &
|
186
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
159
187
|
none: false
|
160
188
|
requirements:
|
161
189
|
- - ">="
|
@@ -165,11 +193,11 @@ dependencies:
|
|
165
193
|
- 0
|
166
194
|
version: "0"
|
167
195
|
type: :development
|
168
|
-
requirement: *
|
196
|
+
requirement: *id012
|
169
197
|
- !ruby/object:Gem::Dependency
|
170
198
|
name: ruby-debug
|
171
199
|
prerelease: false
|
172
|
-
version_requirements: &
|
200
|
+
version_requirements: &id013 !ruby/object:Gem::Requirement
|
173
201
|
none: false
|
174
202
|
requirements:
|
175
203
|
- - ">="
|
@@ -179,11 +207,11 @@ dependencies:
|
|
179
207
|
- 0
|
180
208
|
version: "0"
|
181
209
|
type: :development
|
182
|
-
requirement: *
|
210
|
+
requirement: *id013
|
183
211
|
- !ruby/object:Gem::Dependency
|
184
212
|
name: timecop
|
185
213
|
prerelease: false
|
186
|
-
version_requirements: &
|
214
|
+
version_requirements: &id014 !ruby/object:Gem::Requirement
|
187
215
|
none: false
|
188
216
|
requirements:
|
189
217
|
- - ">="
|
@@ -193,7 +221,7 @@ dependencies:
|
|
193
221
|
- 0
|
194
222
|
version: "0"
|
195
223
|
type: :development
|
196
|
-
requirement: *
|
224
|
+
requirement: *id014
|
197
225
|
description: Collection of various tools
|
198
226
|
email: tobias.schwab@dynport.de
|
199
227
|
executables:
|