]> gitweb.factorcode.org Git - factor.git/commitdiff
calendar.format: use math.parser format directive.
authorJohn Benediktsson <mrjbq7@gmail.com>
Tue, 8 Jul 2014 23:03:02 +0000 (16:03 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Tue, 8 Jul 2014 23:03:02 +0000 (16:03 -0700)
basis/calendar/format/format.factor

index 4b2601f4f2454ef3cc8797d951e434e781cd6b03..774d8121a6eee36b668255e02b3f17d4cd385bcc 100644 (file)
@@ -2,7 +2,8 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors arrays calendar calendar.format.macros
 combinators io io.streams.string kernel math math.functions
-math.order math.parser present sequences typed ;
+math.order math.parser math.parser.private present sequences
+typed ;
 IN: calendar.format
 
 : pad-00 ( n -- str ) number>string 2 CHAR: 0 pad-head ;
@@ -135,11 +136,11 @@ M: timestamp year. ( timestamp -- )
 
 ! Should be enough for anyone, allows to not do a fancy
 ! algorithm to detect infinite decimals (e.g 1/3)
-CONSTANT: rfc3339-precision 5
 : write-rfc3339-seconds ( timestamp -- )
-    second>> 1 mod rfc3339-precision 10^ * round >integer
-    number>string rfc3339-precision CHAR: 0 pad-head
-    [ CHAR: 0 = ] trim-tail [ "." write write ] unless-empty ;
+    second>> 1 mod [
+        >float "%.6f" format-float [ CHAR: 0 = ] trim
+        dup length 1 > [ write ] [ drop ] if
+    ] unless-zero ;
 
 : (timestamp>rfc3339) ( timestamp -- )
     {