# HG changeset patch # User Adam Chlipala # Date 1311363578 14400 # Node ID 3c0803c1acd7cf701c5eeea23e68415bcc548f8d # Parent 5616b2cbdcdb13777ae070040e4cb701293ed67a Backpedal on tutorial-motivated urweb-mode changes; add Basis.diffInSeconds and Basis.toSeconds diff -r 5616b2cbdcdb -r 3c0803c1acd7 include/urweb.h --- a/include/urweb.h Wed Jul 20 08:14:49 2011 -0400 +++ b/include/urweb.h Fri Jul 22 15:39:38 2011 -0400 @@ -252,6 +252,8 @@ uw_Basis_time uw_Basis_now(uw_context); uw_Basis_time uw_Basis_addSeconds(uw_context, uw_Basis_time, uw_Basis_int); +uw_Basis_int uw_Basis_diffInSeconds(uw_context, uw_Basis_time, uw_Basis_time); +uw_Basis_int uw_Basis_toSeconds(uw_context, uw_Basis_time); extern const uw_Basis_time uw_Basis_minTime; void uw_register_transactional(uw_context, void *data, uw_callback commit, uw_callback rollback, uw_callback_with_retry free); diff -r 5616b2cbdcdb -r 3c0803c1acd7 lib/js/urweb.js --- a/lib/js/urweb.js Wed Jul 20 08:14:49 2011 -0400 +++ b/lib/js/urweb.js Fri Jul 22 15:39:38 2011 -0400 @@ -105,6 +105,14 @@ return (new Date()).getTime() * 1000; } +function diffInSeconds(tm1, tm2) { + return Math.round((tm2 - tm1) / 1000000); +} + +function toSeconds(tm) { + return Math.round(tm / 1000000); +} + // Error handling diff -r 5616b2cbdcdb -r 3c0803c1acd7 lib/ur/basis.urs --- a/lib/ur/basis.urs Wed Jul 20 08:14:49 2011 -0400 +++ b/lib/ur/basis.urs Fri Jul 22 15:39:38 2011 -0400 @@ -145,6 +145,9 @@ val now : transaction time val minTime : time val addSeconds : time -> int -> time +val toSeconds : time -> int +val diffInSeconds : time -> time -> int +(* Earlier time first *) val timef : string -> time -> string (* Uses strftime() format string *) val readUtc : string -> option time diff -r 5616b2cbdcdb -r 3c0803c1acd7 src/c/urweb.c --- a/src/c/urweb.c Wed Jul 20 08:14:49 2011 -0400 +++ b/src/c/urweb.c Fri Jul 22 15:39:38 2011 -0400 @@ -3664,6 +3664,14 @@ return tm; } +uw_Basis_int uw_Basis_diffInSeconds(uw_context ctx, uw_Basis_time tm1, uw_Basis_time tm2) { + return difftime(tm2.seconds, tm1.seconds); +} + +uw_Basis_int uw_Basis_toSeconds(uw_context ctx, uw_Basis_time tm) { + return tm.seconds; +} + void *uw_get_global(uw_context ctx, char *name) { int i; diff -r 5616b2cbdcdb -r 3c0803c1acd7 src/elisp/urweb-mode.el --- a/src/elisp/urweb-mode.el Wed Jul 20 08:14:49 2011 -0400 +++ b/src/elisp/urweb-mode.el Fri Jul 22 15:39:38 2011 -0400 @@ -170,10 +170,8 @@ (finished nil) (answer nil) ) - (while (and (not finished) (re-search-backward "[<>{}]|\\*\)" nil t)) + (while (and (not finished) (re-search-backward "[<>{}]" nil t)) (cond - ((looking-at "*)") - (search-backward "(*")) ((looking-at "{") (if (> depth 0) (decf depth) @@ -183,11 +181,13 @@ ((save-excursion (backward-char 1) (or (looking-at "=>") (looking-at "->") (looking-at "<>"))) - (setq finished t)) + nil) ((or (looking-at "< ") (looking-at "<=")) - (setq finished t)) + nil) ((looking-at "<") (setq finished t)) + ((save-excursion (backward-char 1) (looking-at " >")) + nil) ((looking-at ">") (cond ((> depth 0) diff -r 5616b2cbdcdb -r 3c0803c1acd7 src/settings.sml --- a/src/settings.sml Wed Jul 20 08:14:49 2011 -0400 +++ b/src/settings.sml Fri Jul 22 15:39:38 2011 -0400 @@ -252,7 +252,9 @@ ("now", "now"), ("timeToString", "showTime"), - ("htmlifyTime", "showTime")] + ("htmlifyTime", "showTime"), + ("toSeconds", "toSeconds"), + ("diffInSeconds", "diffInSeconds")] val jsFuncs = ref jsFuncsBase fun setJsFuncs ls = jsFuncs := foldl (fn ((k, v), m) => M.insert (m, k, v)) jsFuncsBase ls fun jsFunc x = M.find (!jsFuncs, x)