annotate tests/jscomp.ur @ 1739:c414850f206f

Add support for -boot flag, which allows in-tree execution of Ur/Web The boot flag rewrites most hardcoded paths to point to the build directory, and also forces static compilation. This is convenient for developing Ur/Web, or if you cannot 'sudo make install' Ur/Web. The following changes were made: * Header files were moved to include/urweb instead of include; this lets FFI users point their C_INCLUDE_PATH at this directory at write <urweb/urweb.h>. For internal Ur/Web executables, we simply pass -I$PATH/include/urweb as normal. * Differentiate between LIB and SRCLIB; SRCLIB is Ur and JavaScript source files, while LIB is compiled products from libtool. For in-tree compilation these live in different places. * No longer reference Config for paths; instead use Settings; these settings can be changed dynamically by Compiler.enableBoot () (TODO: add a disableBoot function.) * config.h is now generated directly in include/urweb/config.h, for consistency's sake (especially since it gets installed along with the rest of the headers!) * All of the autotools build products got updated. * The linkStatic field in protocols now only contains the name of the build product, and not the absolute path. Future users have to be careful not to reference the Settings files to early, lest they get an old version (this was the source of two bugs during development of this patch.)
author Edward Z. Yang <ezyang@mit.edu>
date Wed, 02 May 2012 17:17:57 -0400
parents 8fe576c0bee9
children
rev   line source
adamc@973 1 fun fst [a] [b] (x : a) (y : b) = x
adamc@973 2 fun snd [a] [b] (x : a) (y : b) = y
adamc@973 3
adamc@974 4 fun fact n =
adamc@974 5 case n of
adamc@974 6 0 => 1
adamc@974 7 | _ => n * fact (n - 1)
adamc@974 8
adamc@975 9 datatype t =
adamc@975 10 A
adamc@975 11 | B of {C : int, D : float}
adamc@975 12 | E of t * t
adamc@975 13
adamc@975 14 fun render x =
adamc@975 15 case x of
adamc@975 16 A => "A"
adamc@975 17 | B {C = n1, D = n2} => "B(" ^ show n1 ^ "," ^ show n2 ^ ")"
adamc@975 18 | E (x, y) => "C(" ^ render x ^ "," ^ render y ^ ")"
adamc@975 19
adamc@971 20 fun main () =
adamc@971 21 s <- source "";
adamc@973 22 s' <- source "";
adamc@973 23 f <- source (plus 1);
adamc@973 24 f2 <- source fst;
adamc@973 25 r <- source {A = "x", B = "y"};
adamc@975 26 t <- source (E (A, B {C = 10, D = 1.23}));
adamc@975 27 ht <- source <xml>Nothing here yet.</xml>;
adamc@971 28
adamc@971 29 return <xml><body>
adamc@973 30 <ctextbox source={s}/> <ctextbox source={s'}/><br/><br/>
adamc@972 31
adamc@972 32 Function: <button value="+1" onclick={set f (plus 1)}/>
adamc@972 33 <button value="*3" onclick={set f (times 3)}/><br/><br/>
adamc@971 34
adamc@973 35 Function2: <button value="Fst" onclick={set f2 fst}/>
adamc@973 36 <button value="Snd" onclick={set f2 snd}/><br/><br/>
adamc@973 37
adamc@975 38 Both: <button value="*3,Snd" onclick={set f (times 3); set f2 snd}/><br/><br/>
adamc@975 39
adamc@971 40 <button value="Echo" onclick={s <- get s; alert s}/>
adamc@975 41 <button value="Echo2" onclick={s <- get s; alert s; alert s}/>
adamc@973 42 <button value="-" onclick={s <- get s; alert (show (-(readError s : int)))}/>
adamc@971 43 <button value="+1" onclick={s <- get s; alert (show (readError s + 1))}/>
adamc@971 44 <button value="*3" onclick={s <- get s; alert (show ((readError s) * 3))}/>
adamc@974 45 <button value="!" onclick={s <- get s; alert (show (fact (readError s)))}/>
adamc@974 46 <button value="f" onclick={s <- get s; f <- get f; alert (show (f (readError s)))}/>
adamc@974 47 <button value="+1P" onclick={s <- get s; case read s of
adamc@974 48 None => alert "Nada!"
adamc@974 49 | Some (n : int) => alert (show (n + 1))}/>
adamc@973 50
adamc@973 51 <button value="f2" onclick={s <- get s; s' <- get s'; f2 <- get f2; alert (f2 s s')}/><br/><br/>
adamc@973 52
adamc@973 53 <button value="A" onclick={r <- get r; alert r.A}/>
adamc@975 54 <button value="B" onclick={r <- get r; alert r.B}/><br/><br/>
adamc@975 55
adamc@975 56 <button value="render" onclick={t <- get t; alert (render t)}/><br/><br/>
adamc@975 57
adamc@975 58 <dyn signal={signal ht}/>
adamc@975 59 <button value="Set" onclick={s <- get s;
adamc@975 60 set ht <xml><button value="Dynamic!" onclick={alert s}/></xml>}/>
adamc@971 61 </body></xml>