Class: Redmine::DiffTable
Overview
Class that represents a file diff
Instance Attribute Summary collapse
-
#file_name ⇒ Object
readonly
Returns the value of attribute file_name.
Instance Method Summary collapse
-
#add_line(line) ⇒ Object
Function for add a line of this Diff Returns false when the diff ends.
- #each_line ⇒ Object
-
#initialize(type = "inline") ⇒ DiffTable
constructor
Initialize with a Diff file and the type of Diff View The type view must be inline or sbs (side_by_side).
- #inspect ⇒ Object
Methods inherited from Array
Methods included from Diffable
#diff, #patch, #replacenextlarger, #reverse_hash
Constructor Details
#initialize(type = "inline") ⇒ DiffTable
Initialize with a Diff file and the type of Diff View The type view must be inline or sbs (side_by_side)
63 64 65 66 67 68 |
# File 'lib/redmine/unified_diff.rb', line 63 def initialize(type="inline") @parsing = false @added = 0 @removed = 0 @type = type end |
Instance Attribute Details
#file_name ⇒ Object (readonly)
Returns the value of attribute file_name.
59 60 61 |
# File 'lib/redmine/unified_diff.rb', line 59 def file_name @file_name end |
Instance Method Details
#add_line(line) ⇒ Object
Function for add a line of this Diff Returns false when the diff ends
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/redmine/unified_diff.rb', line 72 def add_line(line) unless @parsing if line =~ /^(---|\+\+\+) (.*)$/ @file_name = $2 elsif line =~ /^@@ (\+|\-)(\d+)(,\d+)? (\+|\-)(\d+)(,\d+)? @@/ @line_num_l = $2.to_i @line_num_r = $5.to_i @parsing = true end else if line =~ /^[^\+\-\s@\\]/ @parsing = false return false elsif line =~ /^@@ (\+|\-)(\d+)(,\d+)? (\+|\-)(\d+)(,\d+)? @@/ @line_num_l = $2.to_i @line_num_r = $5.to_i else parse_line(line, @type) end end return true end |
#each_line ⇒ Object
95 96 97 98 99 100 101 102 103 |
# File 'lib/redmine/unified_diff.rb', line 95 def each_line prev_line_left, prev_line_right = nil, nil each do |line| spacing = prev_line_left && prev_line_right && (line.nb_line_left != prev_line_left+1) && (line.nb_line_right != prev_line_right+1) yield spacing, line prev_line_left = line.nb_line_left.to_i if line.nb_line_left.to_i > 0 prev_line_right = line.nb_line_right.to_i if line.nb_line_right.to_i > 0 end end |
#inspect ⇒ Object
105 106 107 108 109 110 111 |
# File 'lib/redmine/unified_diff.rb', line 105 def inspect puts '### DIFF TABLE ###' puts "file : #{file_name}" self.each do |d| d.inspect end end |