unified_diff 0.3.0 → 0.3.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.3.0
1
+ 0.3.1
@@ -7,7 +7,11 @@ module UnifiedDiff
7
7
  FILE_PATTERN = /(.*)\t'{2}?(.*)'{2}?/
8
8
  OLD_FILE_PATTERN = /--- #{FILE_PATTERN}/
9
9
  NEW_FILE_PATTERN = /\+\+\+ #{FILE_PATTERN}/
10
- CHUNK_PATTERN = /@@ -(\d+),(\d+) \+(\d+),(\d+) @@/
10
+ # Match assignment is tricky for CHUNK_PATTERN
11
+ # $1,$2 are static, but $3,$4,$5 vary
12
+ # if pattern is X,Y then $3 = X,Y, $4 = X, $5 = Y
13
+ # if pattern is X then $3 = X
14
+ CHUNK_PATTERN = /@@ -(\d+),(\d+) \+((\d+),(\d+)|(\d+)) @@/
11
15
  ADDED_PATTERN = /\+(.*)/
12
16
  REMOVED_PATTERN = /-(.*)/
13
17
  UNCHANGED_PATTERN = / (.*)/
@@ -41,8 +45,13 @@ module UnifiedDiff
41
45
  when CHUNK_PATTERN
42
46
  old_begin = $1.to_i
43
47
  old_end = old_begin + $2.to_i
44
- new_begin = $3.to_i
45
- new_end = new_begin + $4.to_i
48
+ if $3.include?(',') # Will match if non-edge case encountered
49
+ new_begin = $4.to_i
50
+ new_end = new_begin + $5.to_i
51
+ else
52
+ new_begin = $3.to_i
53
+ new_end = new_begin + 1
54
+ end
46
55
  @working_chunk = Chunk.new(original: (old_begin...old_end), modified: (new_begin...new_end))
47
56
  @chunks << @working_chunk
48
57
  when ADDED_PATTERN
@@ -93,4 +93,16 @@ class TestUnifiedDiff < MiniTest::Unit::TestCase
93
93
  def test_to_s
94
94
  assert_equal @original, @diff.to_s
95
95
  end
96
+
97
+ def test_handles_one_element_chunk_range
98
+ diff = <<-DIFF.unindent
99
+ --- /tmp/old.txt 2011-06-01 14:18:37.000000000 -0500
100
+ +++ /tmp/new.txt 2011-06-01 14:18:38.000000000 -0500
101
+ @@ -0,0 +1 @@
102
+ + IFrame
103
+ DIFF
104
+ @diff = UnifiedDiff.parse(diff)
105
+ @chunk = @diff.chunks.first
106
+ assert_equal (1...2), @chunk.modified_range
107
+ end
96
108
  end
data/unified_diff.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{unified_diff}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ryan Neufeld"]
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: unified_diff
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.0
5
+ version: 0.3.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ryan Neufeld
@@ -95,7 +95,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - ">="
97
97
  - !ruby/object:Gem::Version
98
- hash: -1003861306608030008
98
+ hash: -1091492518955260007
99
99
  segments:
100
100
  - 0
101
101
  version: "0"