aboutsummaryrefslogtreecommitdiff
path: root/log.rb
diff options
context:
space:
mode:
authorBenjamin Kellermann <Benjamin.Kellermann@gmx.de>2009-11-23 15:58:49 +0100
committerBenjamin Kellermann <Benjamin.Kellermann@gmx.de>2009-11-23 15:58:49 +0100
commit19409f822c901b4935b07493d741d479fbc119a0 (patch)
treec971ca940ebf21d0fe103a1be9276e88f85396f3 /log.rb
parentfc936f76f65db94469959883c8ef2926ff0e779b (diff)
started to implement undo, added flatten option
Diffstat (limited to 'log.rb')
-rw-r--r--log.rb23
1 files changed, 20 insertions, 3 deletions
diff --git a/log.rb b/log.rb
index fe0d4f5..ca08b9c 100644
--- a/log.rb
+++ b/log.rb
@@ -78,10 +78,10 @@ class Log
@log << LogEntry.new(revision,timestamp,comment)
@log.sort!{|a,b| a.rev <=> b.rev}
end
- def to_html(maxrev, middlerevision)
+ def to_html(notlinkrevision)
ret = "<table><tr><th>Version</th><th>Date</th><th>Comment</th></tr>"
- self[((middlerevision-5)..(middlerevision+5))].each do |l|
- ret += l.to_html(middlerevision != l.rev)
+ self.each do |l|
+ ret += l.to_html(notlinkrevision != l.rev)
end
ret += "</table>"
ret
@@ -95,6 +95,23 @@ class Log
def comment_matches(regex)
Log.new(@log.collect{|e| e if e.comment =~ regex}.compact)
end
+ def flatten
+ h = []
+ minrev = min.rev
+ rev = max.rev
+ while rev > minrev
+ elem = self[rev]
+ prevrev = elem.comment.scan(/^Reverted Poll to revision (\d*)$/).flatten[0]
+ if prevrev
+ rev = prevrev.to_i
+ else
+ h << elem
+ rev += -1
+ end
+ end
+ h.sort!{|a,b| a.rev <=> b.rev}
+ Log.new(h)
+ end
end
if __FILE__ == $0