unified_diff 0.3.0 → 0.3.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 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"