view tests/DynChannel.ur @ 2142:3288e3c9948b

Fix XML indentation in Emacs mode The return value of MATCH-STRING is a string. At least on Emacs 25, the comparisons between string and character with EQUAL could never succeed, and so the cases for matching braces were never triggered. GET-TEXT-PROPERTY may return a list rather than an atom (for example, on long lines with whitespace-mode turned on), and this broke the heuristic of looking for the tag face in previous text.
author Julian Squires <julian@cipht.net>
date Mon, 04 May 2015 14:35:07 -0400
parents 3dd041b00087
children
line wrap: on
line source
table channels : {Id : int, Channel:channel xbody}

fun dosend (s:string) : transaction unit =
  c <- oneRow1 (SELECT * FROM channels);
  debug ("Sending " ^ s ^ " through the channel...");
  send c.Channel <xml>{[s]}</xml>

fun mkchannel {} : transaction xbody =
  c <- channel;
  s <- source <xml/>;
  dml( DELETE FROM channels WHERE Id >= 0);
  dml( INSERT INTO channels(Id, Channel) VALUES(0, {[c]}) );
  return <xml>
    <button value="Send" onclick={fn _ => rpc(dosend "blabla")}/>
    <active code={spawn(x <- recv c; alert ("Got something from the channel"); set s x); return <xml/>}/>
    <dyn signal={signal s}/>
  </xml>

fun main {} : transaction page =
  s <- source <xml/>;
  return <xml>
    <head/>
    <body>
      <button value="Register" onclick={fn _ =>
        x <- rpc(mkchannel {}); set s x
      }/>
      <dyn signal={signal s}/>
    </body>
  </xml>