agenda-libre-ruby/lib/differ/format/patch.rb

46 lines
971 B
Ruby

# Formatter for diff output
module Differ
module Format
# Try to format as unified diff, using - and +
module Patch
class << self
def format(change)
if change.change?
as_change change
elsif change.delete?
as_delete change
elsif change.insert?
as_insert change
else
''
end
end
private
def as_insert(change)
if change.insert.start_with? ' '
change.insert[0] = '+'
change.insert
else
'+ ' + change.insert
end
end
def as_delete(change)
if change.delete.start_with? ' '
change.delete[0] = '-'
change.delete
else
'- ' + change.delete
end
end
def as_change(change)
[as_delete(change), as_insert(change)].join "\n"
end
end
end
end
end