kronk 1.7.5 → 1.7.6

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.
@@ -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