Class: Travelog::Diff

Inherits:
Object
  • Object
show all
Defined in:
lib/travelog.rb

Constant Summary collapse

ADD_LINE =
/^\+\s*([\w-]+)\s\(([\d\.]+)\)/
DEL_LINE =
/^-\s*([\w-]+)\s\(([\d\.]+)\)/

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDiff

Returns a new instance of Diff.



7
8
9
10
# File 'lib/travelog.rb', line 7

def initialize
  @delete = {}
  @append = {}
end

Instance Attribute Details

#appendObject (readonly)

Returns the value of attribute append.



5
6
7
# File 'lib/travelog.rb', line 5

def append
  @append
end

#deleteObject (readonly)

Returns the value of attribute delete.



5
6
7
# File 'lib/travelog.rb', line 5

def delete
  @delete
end

Instance Method Details

#<<(line) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/travelog.rb', line 14

def <<(line)
  case line.strip
  when ADD_LINE
    append_set($1, $2)
  when DEL_LINE
    delete_set($1, $2)
  end
end

#reportObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/travelog.rb', line 23

def report
  puts "***** CHANGED GEM'S *****"
  (append.keys & delete.keys).each do |k|
    puts "#{k} #{append[k]}(was #{delete[k]})"
  end

  puts
  puts "***** INSTALLED GEM'S *****"
  (append.keys - delete.keys).each do |k|
    puts "#{k} #{append[k]}"
  end

  puts
  puts "***** UNINSTALLED GEM'S *****"
  (delete.keys - append.keys).each do |k|
    puts "#{k} #{delete[k]}"
  end
end