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", style = nil) ⇒ 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 included from Diffable
#diff, #patch, #replacenextlarger, #reverse_hash
Constructor Details
#initialize(type = "inline", style = nil) ⇒ DiffTable
Initialize with a Diff file and the type of Diff View The type view must be inline or sbs (side_by_side)
56 57 58 59 60 61 62 63 64 |
# File 'lib/redmine/unified_diff.rb', line 56 def initialize(type="inline", style=nil) @parsing = false @added = 0 @removed = 0 @type = type @style = style @file_name = nil @git_diff = false end |
Instance Attribute Details
#file_name ⇒ Object
Returns the value of attribute file_name
52 53 54 |
# File 'lib/redmine/unified_diff.rb', line 52 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
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/redmine/unified_diff.rb', line 68 def add_line(line) unless @parsing if line =~ /^(---|\+\+\+) (.*)$/ self.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 =~ %r{^[^\+\-\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
91 92 93 94 95 96 97 98 99 |
# File 'lib/redmine/unified_diff.rb', line 91 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
101 102 103 104 105 106 107 |
# File 'lib/redmine/unified_diff.rb', line 101 def inspect puts '### DIFF TABLE ###' puts "file : #{file_name}" self.each do |d| d.inspect end end |