Class: Unified::Diff
- Inherits:
-
Object
- Object
- Unified::Diff
- Defined in:
- lib/unified/diff.rb
Instance Attribute Summary collapse
-
#chunks ⇒ Object
readonly
Returns the value of attribute chunks.
-
#modified_filename ⇒ Object
readonly
Returns the value of attribute modified_filename.
-
#modified_revision ⇒ Object
readonly
Returns the value of attribute modified_revision.
-
#original_filename ⇒ Object
readonly
Returns the value of attribute original_filename.
-
#original_revision ⇒ Object
readonly
Returns the value of attribute original_revision.
Class Method Summary collapse
Instance Method Summary collapse
- #each_chunk ⇒ Object
- #header ⇒ Object
-
#initialize(attrs = {}) ⇒ Diff
constructor
A new instance of Diff.
- #number_of_added_lines ⇒ Object
- #number_of_deleted_lines ⇒ Object
- #number_of_modified_lines ⇒ Object
- #number_of_unchanged_lines ⇒ Object
- #proportion_of_added_lines ⇒ Object
- #proportion_of_deleted_lines ⇒ Object
- #to_s ⇒ Object
- #total_number_of_lines ⇒ Object
Constructor Details
#initialize(attrs = {}) ⇒ Diff
Returns a new instance of Diff.
11 12 13 14 15 16 17 |
# File 'lib/unified/diff.rb', line 11 def initialize(attrs={}) @original_filename = attrs[:original_filename] @modified_filename = attrs[:modified_filename] @original_revision = attrs[:original_revision] @modified_revision = attrs[:modified_revision] @chunks = attrs[:chunks] end |
Instance Attribute Details
#chunks ⇒ Object (readonly)
Returns the value of attribute chunks.
9 10 11 |
# File 'lib/unified/diff.rb', line 9 def chunks @chunks end |
#modified_filename ⇒ Object (readonly)
Returns the value of attribute modified_filename.
6 7 8 |
# File 'lib/unified/diff.rb', line 6 def modified_filename @modified_filename end |
#modified_revision ⇒ Object (readonly)
Returns the value of attribute modified_revision.
8 9 10 |
# File 'lib/unified/diff.rb', line 8 def modified_revision @modified_revision end |
#original_filename ⇒ Object (readonly)
Returns the value of attribute original_filename.
5 6 7 |
# File 'lib/unified/diff.rb', line 5 def original_filename @original_filename end |
#original_revision ⇒ Object (readonly)
Returns the value of attribute original_revision.
7 8 9 |
# File 'lib/unified/diff.rb', line 7 def original_revision @original_revision end |
Class Method Details
.parse!(content) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/unified/diff.rb', line 19 def self.parse!(content) begin Unified::Transformer.new.apply(Unified::Parser.new.parse(content)) rescue StandardError => e raise Unified::ParseError, e. end end |
Instance Method Details
#each_chunk ⇒ Object
67 68 69 70 71 |
# File 'lib/unified/diff.rb', line 67 def each_chunk @chunks.each do |chunk| yield chunk end end |
#header ⇒ Object
55 56 57 |
# File 'lib/unified/diff.rb', line 55 def header "--- #{@original_filename}\t#{@original_revision}\n+++ #{modified_filename}\t#{@modified_revision}" end |
#number_of_added_lines ⇒ Object
31 32 33 |
# File 'lib/unified/diff.rb', line 31 def number_of_added_lines @number_of_added_lines ||= @chunks.inject(0) {|total, chunk| total + chunk.number_of_added_lines} end |
#number_of_deleted_lines ⇒ Object
35 36 37 |
# File 'lib/unified/diff.rb', line 35 def number_of_deleted_lines @number_of_deleted_lines ||= @chunks.inject(0) {|total, chunk| total + chunk.number_of_deleted_lines} end |
#number_of_modified_lines ⇒ Object
43 44 45 |
# File 'lib/unified/diff.rb', line 43 def number_of_modified_lines @number_of_modified_lines ||= number_of_deleted_lines + number_of_added_lines end |
#number_of_unchanged_lines ⇒ Object
39 40 41 |
# File 'lib/unified/diff.rb', line 39 def number_of_unchanged_lines @number_of_unchanged_lines ||= @chunks.inject(0) {|total, chunk| total + chunk.number_of_unchanged_lines} end |
#proportion_of_added_lines ⇒ Object
51 52 53 |
# File 'lib/unified/diff.rb', line 51 def proportion_of_added_lines @proportion_of_added_lines ||= 100 - proportion_of_deleted_lines end |
#proportion_of_deleted_lines ⇒ Object
47 48 49 |
# File 'lib/unified/diff.rb', line 47 def proportion_of_deleted_lines @proportion_of_deleted_lines ||= ((100.0 * number_of_deleted_lines / number_of_modified_lines)).round end |
#to_s ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/unified/diff.rb', line 59 def to_s str = [header] @chunks.each do |chunk| str << chunk.to_s end str.join("\n") end |
#total_number_of_lines ⇒ Object
27 28 29 |
# File 'lib/unified/diff.rb', line 27 def total_number_of_lines @total_number_of_lines ||= number_of_added_lines + number_of_deleted_lines + number_of_unchanged_lines end |