]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/calendar/holidays/us/us.factor
calendar.holidays: clone timestamps and make holidays mutating.
[factor.git] / extra / calendar / holidays / us / us.factor
index 9ad2ecc5b220777591abbaf9285462e98d88a030..350cf8154ed6abf3064437df3fed9d401c627852 100644 (file)
@@ -10,18 +10,19 @@ SINGLETONS: us us-federal ;
 
 <PRIVATE
 
-: adjust-federal-holiday ( timestamp -- timestamp' )
+: adjust-federal-holiday ( timestamp -- timestamp )
     {
-        { [ dup saturday? ] [ 1 days time- ] }
-        { [ dup sunday? ] [ 1 days time+ ] }
+        { [ dup saturday? ] [ -1 days (time+) ] }
+        { [ dup sunday? ] [ 1 days (time+) ] }
         [ ]
     } cond ;
 
 PRIVATE>
 
 M: us-federal holidays
-    (holidays)
-    [ execute( timestamp -- timestamp' ) adjust-federal-holiday ] with map ;
+    (holidays) [
+        [ clone ] dip execute( timestamp -- timestamp ) adjust-federal-holiday
+    ] with map ;
 
 : us-post-office-open? ( timestamp -- ? )
     { [ sunday? not ] [ us-federal holiday? not ] } 1&& ;