From fc936f76f65db94469959883c8ef2926ff0e779b Mon Sep 17 00:00:00 2001 From: Benjamin Kellermann Date: Mon, 23 Nov 2009 15:05:58 +0100 Subject: new feature selecting parts of history --- log.rb | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'log.rb') diff --git a/log.rb b/log.rb index 2d62090..fe0d4f5 100644 --- a/log.rb +++ b/log.rb @@ -33,7 +33,7 @@ class LogEntry ret += "" if link ret += "" ret += "#{@timestamp.strftime('%d.%m, %H:%M')}" - ret += "#{CGI.escapeHTML(@comment)}" + ret += "#{CGI.escapeHTML(@comment)}" ret += "" ret end @@ -89,6 +89,12 @@ class Log def each @log.each{|e| yield(e)} end + def collect + @log.collect{|e| yield(e)} + end + def comment_matches(regex) + Log.new(@log.collect{|e| e if e.comment =~ regex}.compact) + end end if __FILE__ == $0 @@ -97,16 +103,19 @@ require "test/unit" def test_indexes l = Log.new - l.add(10,Time.now,"foo 10") + l.add(10,Time.now,"baz 10") 20.times{|i| l.add(i,Time.now,"foo #{i}") unless i == 10 } assert_equal(0,l.min.rev) assert_equal(19,l.max.rev) - assert_equal("foo 10",l[10].comment) - l = l[9..11] - assert_equal([9,10,11],[l[9].rev,l[10].rev,l[11].rev]) + assert_equal("baz 10",l[10].comment) + + p = l[9..11] + assert_equal([9,10,11],[p[9].rev,p[10].rev,p[11].rev]) + + assert_equal([10],l.comment_matches(/^baz \d*$/).collect{|e| e.rev}) end end end -- cgit v1.2.3