about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2017-10-02 15:33:02 +0200
committerLeah Neukirchen <leah@vuxu.org>2017-10-02 15:33:02 +0200
commitc1a23ce5345c95c1d374325c8f5e4dc0182602de (patch)
treef3062374c7d9eb3ef00dad3b582dcc6fab9aa52f
parentac55862e8080b26bef20acf4b798ef3d00a8da90 (diff)
downloadnotyet-c1a23ce5345c95c1d374325c8f5e4dc0182602de.tar.gz
notyet-c1a23ce5345c95c1d374325c8f5e4dc0182602de.tar.xz
notyet-c1a23ce5345c95c1d374325c8f5e4dc0182602de.zip
compute days remaining for all dates
-rwxr-xr-xnotyet20
1 files changed, 13 insertions, 7 deletions
diff --git a/notyet b/notyet
index ce2366f..ea778e4 100755
--- a/notyet
+++ b/notyet
@@ -7,6 +7,7 @@
 # http://creativecommons.org/publicdomain/zero/1.0/
 
 require 'date'
+TODAY = Date.today
 
 class Entry < Struct.new(:depth, :state, :desc, :file, :line, :children)
   def reindent(change)
@@ -62,13 +63,18 @@ class Entry < Struct.new(:depth, :state, :desc, :file, :line, :children)
         force("?")
       end
 
-      soonest = children.map { |c|
-        "-?".index(c.state) &&
-          c.desc[/^(?:\(.*?\)\s*)?(\d\d\d\d-\d\d-\d\d)/, 1] 
-      }.compact.min
-      if soonest
-        diff = "%+d" % (Date.parse(soonest) - Date.today)
-        self.desc = "#{soonest} {#{diff}} #{desc}"
+      if desc =~ /^(?:\(.*?\)\s*)?(\d\d\d\d-\d\d-\d\d)/
+        diff = "%+d" % (Date.parse($1) - TODAY)
+        self.desc = "#{$1} {#{diff}}#{$'}"
+      else
+        soonest = children.map { |c|
+          "-?".index(c.state) &&
+            c.desc[/^(?:\(.*?\)\s*)?(\d\d\d\d-\d\d-\d\d)/, 1]
+        }.compact.min
+        if soonest
+          diff = "%+d" % (Date.parse(soonest) - TODAY)
+          self.desc = "#{soonest} {#{diff}} #{desc}"
+        end
       end
     end
   end