kronk 1.7.5 → 1.7.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,9 @@
1
+ === 1.7.6 / 2011-10-28
2
+
3
+ * Bugfixes:
4
+
5
+ * Fix for diffs with duplicate lines before large common section.
6
+
1
7
  === 1.7.5 / 2011-10-27
2
8
 
3
9
  * Bugfixes:
@@ -75,6 +75,9 @@ Parse the data and run an IRB console with the response:
75
75
 
76
76
  == CONFIGURATION:
77
77
 
78
+ Although Kronk supports Ruby-1.8.7, it's been fine-tuned for Ruby-1.9.2 and
79
+ runs about 5x faster when benchmarking between 1.8.7p249 and 1.9.2p180.
80
+
78
81
  Kronk pulls it's config from $HOME/.kronk/rc and supports the following:
79
82
 
80
83
  Set the file to save the last http response retrieved in:
data/Rakefile CHANGED
@@ -80,10 +80,10 @@ namespace :bm do
80
80
 
81
81
  desc "Run performance benchmarks on diffs"
82
82
  task :diff do
83
- left = Kronk::Request.retrieve("prod.txt").parsed_body
84
- right = Kronk::Request.retrieve("beta.txt").parsed_body
83
+ left = Kronk.retrieve("prod.txt").body
84
+ right = Kronk.retrieve("beta.txt").body
85
85
 
86
- diff = Kronk::Diff.new_from_data left, right
86
+ diff = Kronk::Diff.new left, right
87
87
 
88
88
  arr1 = diff.str1.split "\n"
89
89
  arr2 = diff.str2.split "\n"
@@ -14,7 +14,7 @@ require 'yaml'
14
14
  class Kronk
15
15
 
16
16
  # This gem's version.
17
- VERSION = '1.7.5'
17
+ VERSION = '1.7.6'
18
18
 
19
19
  require 'kronk/constants'
20
20
  require 'kronk/queue_runner'
@@ -126,12 +126,16 @@ class Kronk
126
126
  common_sequences(arr1, arr2) do |seq|
127
127
  next if used1[seq[1]] || used2[seq[2]]
128
128
 
129
- next if used1[seq[1], seq[0]].to_a.index(true) ||
130
- used2[seq[2], seq[0]].to_a.index(true)
131
-
132
- next if used1[seq[1]+seq[0]..-1].to_a.nitems !=
133
- used2[seq[2]+seq[0]..-1].to_a.nitems
134
-
129
+ next if Array(used1[seq[1], seq[0]]).index(true) ||
130
+ Array(used2[seq[2], seq[0]]).index(true)
131
+
132
+ if seq[1] > (used1.length / 2)
133
+ next if Array(used1[seq[1]+seq[0]..-1]).nitems !=
134
+ Array(used2[seq[2]+seq[0]..-1]).nitems
135
+ else
136
+ next if Array(used1[0..seq[1]]).nitems !=
137
+ Array(used2[0..seq[2]]).nitems
138
+ end
135
139
 
136
140
  used1.fill(true, seq[1], seq[0])
137
141
  used2.fill(true, seq[2], seq[0])
@@ -183,6 +187,11 @@ class Kronk
183
187
 
184
188
  sequences[len] ||= []
185
189
  sequences[len] << [len, i, start_j]
190
+
191
+ if len > 1
192
+ sequences[len-1] ||= []
193
+ sequences[len-1] << [(len-1), i, start_j]
194
+ end
186
195
  end
187
196
  end
188
197
 
@@ -204,6 +204,27 @@ class TestDiff < Test::Unit::TestCase
204
204
  end
205
205
 
206
206
 
207
+ def test_create_diff_duplicate_match
208
+ str1 = "line2\nline3a\nline4\nline5\nline6\nline4\nline6\nline7\nline8\nline9"
209
+ str2 = "line2\nline4\nline5\nline6\nline7\nline8\nline9"
210
+
211
+ expected = [
212
+ "line2",
213
+ [["line3a"], []],
214
+ "line4",
215
+ "line5",
216
+ [["line6", "line4"], []],
217
+ "line6",
218
+ "line7",
219
+ "line8",
220
+ "line9"
221
+ ]
222
+
223
+ diff = Kronk::Diff.new str1, str2
224
+ assert_equal expected, diff.create_diff
225
+ end
226
+
227
+
207
228
  def test_count
208
229
  assert_equal 4, @diff.count
209
230
  end
metadata CHANGED
@@ -1,109 +1,107 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: kronk
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.7.6
4
5
  prerelease:
5
- version: 1.7.5
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Jeremie Castagna
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-10-27 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2011-10-29 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: json
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2168882440 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
18
+ requirements:
21
19
  - - ~>
22
- - !ruby/object:Gem::Version
23
- version: "1.5"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.5'
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: cookiejar
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2168882440
25
+ - !ruby/object:Gem::Dependency
26
+ name: cookiejar
27
+ requirement: &2168881680 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
29
+ requirements:
32
30
  - - ~>
33
- - !ruby/object:Gem::Version
31
+ - !ruby/object:Gem::Version
34
32
  version: 0.3.0
35
33
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: plist
39
34
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2168881680
36
+ - !ruby/object:Gem::Dependency
37
+ name: plist
38
+ requirement: &2168880700 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
40
+ requirements:
43
41
  - - ~>
44
- - !ruby/object:Gem::Version
42
+ - !ruby/object:Gem::Version
45
43
  version: 3.1.0
46
44
  type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: nokogiri
50
45
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *2168880700
47
+ - !ruby/object:Gem::Dependency
48
+ name: nokogiri
49
+ requirement: &2168879840 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
51
+ requirements:
54
52
  - - ~>
55
- - !ruby/object:Gem::Version
56
- version: "1.4"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.4'
57
55
  type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: mocha
61
56
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *2168879840
58
+ - !ruby/object:Gem::Dependency
59
+ name: mocha
60
+ requirement: &2168878580 !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
62
+ requirements:
65
63
  - - ~>
66
- - !ruby/object:Gem::Version
64
+ - !ruby/object:Gem::Version
67
65
  version: 0.9.12
68
66
  type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: em-http-request
72
67
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *2168878580
69
+ - !ruby/object:Gem::Dependency
70
+ name: em-http-request
71
+ requirement: &2168877780 !ruby/object:Gem::Requirement
74
72
  none: false
75
- requirements:
73
+ requirements:
76
74
  - - ~>
77
- - !ruby/object:Gem::Version
75
+ - !ruby/object:Gem::Version
78
76
  version: 1.0.0
79
77
  type: :development
80
- version_requirements: *id006
81
- - !ruby/object:Gem::Dependency
82
- name: hoe
83
78
  prerelease: false
84
- requirement: &id007 !ruby/object:Gem::Requirement
79
+ version_requirements: *2168877780
80
+ - !ruby/object:Gem::Dependency
81
+ name: hoe
82
+ requirement: &2168876780 !ruby/object:Gem::Requirement
85
83
  none: false
86
- requirements:
84
+ requirements:
87
85
  - - ~>
88
- - !ruby/object:Gem::Version
89
- version: "2.12"
86
+ - !ruby/object:Gem::Version
87
+ version: '2.11'
90
88
  type: :development
91
- version_requirements: *id007
92
- description: |-
93
- Kronk runs diffs against data from live and cached http responses.
94
- Kronk was made possible by the sponsoring of AT&T Interactive.
95
- email:
89
+ prerelease: false
90
+ version_requirements: *2168876780
91
+ description: ! 'Kronk runs diffs against data from live and cached http responses.
92
+
93
+ Kronk was made possible by the sponsoring of AT&T Interactive.'
94
+ email:
96
95
  - yaksnrainbows@gmail.com
97
- executables:
96
+ executables:
98
97
  - kronk
99
98
  extensions: []
100
-
101
- extra_rdoc_files:
99
+ extra_rdoc_files:
102
100
  - Manifest.txt
103
101
  - History.rdoc
104
102
  - README.rdoc
105
103
  - TODO.rdoc
106
- files:
104
+ files:
107
105
  - .autotest
108
106
  - History.rdoc
109
107
  - Manifest.txt
@@ -173,33 +171,34 @@ files:
173
171
  - .gemtest
174
172
  homepage: https://github.com/yaksnrainbows/kronk
175
173
  licenses: []
176
-
177
174
  post_install_message:
178
- rdoc_options:
175
+ rdoc_options:
179
176
  - --main
180
177
  - README.rdoc
181
- require_paths:
178
+ require_paths:
182
179
  - lib
183
- required_ruby_version: !ruby/object:Gem::Requirement
180
+ required_ruby_version: !ruby/object:Gem::Requirement
184
181
  none: false
185
- requirements:
186
- - - ">="
187
- - !ruby/object:Gem::Version
188
- version: "0"
189
- required_rubygems_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ! '>='
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ segments:
187
+ - 0
188
+ hash: -2280556396485806807
189
+ required_rubygems_version: !ruby/object:Gem::Requirement
190
190
  none: false
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: "0"
191
+ requirements:
192
+ - - ! '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
195
  requirements: []
196
-
197
196
  rubyforge_project: kronk
198
- rubygems_version: 1.8.11
197
+ rubygems_version: 1.8.10
199
198
  signing_key:
200
199
  specification_version: 3
201
200
  summary: Kronk runs diffs against data from live and cached http responses
202
- test_files:
201
+ test_files:
203
202
  - test/test_assertions.rb
204
203
  - test/test_cmd.rb
205
204
  - test/test_core_ext.rb