Class: WCC::DiffItem
- Inherits:
-
Object
- Object
- WCC::DiffItem
- Defined in:
- lib/wcc/diff.rb
Instance Attribute Summary collapse
-
#hilite ⇒ Object
Returns the value of attribute hilite.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
-
#text ⇒ Object
readonly
Returns the value of attribute text.
Instance Method Summary collapse
- #html_hilite_text(css_klass = 'hilite') ⇒ Object
-
#initialize(line) ⇒ DiffItem
constructor
A new instance of DiffItem.
-
#rchar ⇒ String
Returns a representing character for the kind of this diff item.
-
#to_s ⇒ String
Returns an unified diff line without trailing newline.
Constructor Details
#initialize(line) ⇒ DiffItem
Returns a new instance of DiffItem.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/wcc/diff.rb', line 8 def initialize(line) # parse line if line.start_with?('+++') @status = :new @text = line.substring(3) elsif line.start_with?('---') @status = :old @text = line.substring(3) elsif line.start_with?('@@') @status = :range @text = line.substring(2) elsif line.start_with?('+') @status = :ins @text = line.substring(1) elsif line.start_with?('-') @status = :del @text = line.substring(1) else @status = :other @text = line.rstrip @text = ' ' if @text.empty? end @text.gsub!(/\n/, '') @hilite = nil end |
Instance Attribute Details
#hilite ⇒ Object
Returns the value of attribute hilite.
6 7 8 |
# File 'lib/wcc/diff.rb', line 6 def hilite @hilite end |
#status ⇒ Object (readonly)
Returns the value of attribute status.
5 6 7 |
# File 'lib/wcc/diff.rb', line 5 def status @status end |
#text ⇒ Object (readonly)
Returns the value of attribute text.
5 6 7 |
# File 'lib/wcc/diff.rb', line 5 def text @text end |
Instance Method Details
#html_hilite_text(css_klass = 'hilite') ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/wcc/diff.rb', line 34 def html_hilite_text(css_klass = 'hilite') return @text if @hilite.nil? i = 0 new_text = '' in_span = false @text.chars.to_a.each do |c| if @hilite.include?(i) if not in_span new_text += "<span class=\"#{css_klass}\">" in_span = true end new_text += (c == ' ' ? ' ' : c) else if in_span new_text += "</span>" in_span = false end new_text += c end i += 1 end new_text += "</span>" if in_span new_text end |
#rchar ⇒ String
Returns a representing character for the kind of this diff item.
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/wcc/diff.rb', line 62 def rchar case status when :new 'N' when :old 'O' when :range '@' when :ins 'i' when :del 'd' when :other '_' end end |
#to_s ⇒ String
Returns an unified diff line without trailing newline.
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/wcc/diff.rb', line 81 def to_s case status when :new '+++'+text when :old '---'+text when :range '@@'+text when :ins '+'+text when :del '-'+text when :other ' '+text end end |