Mercurial > urweb
changeset 1703:6f2f74cc4ead
Change ID generation scheme to conform to HTML standards (thanks to Edward Yang for the catch)
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Fri, 16 Mar 2012 08:42:51 -0400 (2012-03-16) |
parents | 06791667937e |
children | 21ecf340f05c |
files | lib/js/urweb.js src/c/urweb.c tests/id.ur |
diffstat | 3 files changed, 20 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/js/urweb.js Wed Mar 14 10:10:56 2012 -0400 +++ b/lib/js/urweb.js Fri Mar 16 08:42:51 2012 -0400 @@ -1731,7 +1731,7 @@ var nextId = 0; function fresh() { - return (--nextId).toString(); + return "uw" + (--nextId); }
--- a/src/c/urweb.c Wed Mar 14 10:10:56 2012 -0400 +++ b/src/c/urweb.c Fri Mar 16 08:42:51 2012 -0400 @@ -3962,7 +3962,14 @@ } uw_Basis_string uw_Basis_fresh(uw_context ctx) { - return uw_Basis_htmlifyInt(ctx, ctx->nextId++); + int len; + char *r; + + uw_check_heap(ctx, 2+INTS_MAX); + r = ctx->heap.front; + sprintf(r, "uw%u%n", ctx->nextId++, &len); + ctx->heap.front += len+1; + return r; } uw_Basis_float uw_Basis_floatFromInt(uw_context ctx, uw_Basis_int n) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/id.ur Fri Mar 16 08:42:51 2012 -0400 @@ -0,0 +1,11 @@ +fun main () : transaction page = + id1 <- fresh; + id2 <- fresh; + x <- source <xml/>; + return <xml><body> + <span id={id1}>Hi!</span> + <span id={id2}>Ho!</span> + <dyn signal={signal x}/> + <button value="Set" onclick={id <- fresh; set x <xml><span id={id}>He!</span></xml>}/> + <button value="Show" onclick={x <- get x; alert (show x)}/> + </body></xml>