annotate demo/refFun.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 1a317a707d71
children
rev   line source
adamc@419 1 functor Make(M : sig
adamc@419 2 type data
adamc@419 3 val inj : sql_injectable data
adamc@419 4 end) = struct
adamc@419 5
adamc@419 6 type ref = int
adamc@419 7
adamc@419 8 sequence s
adamc@419 9 table t : { Id : int, Data : M.data }
adamc@708 10 PRIMARY KEY Id
adamc@419 11
adamc@419 12 fun new d =
adamc@419 13 id <- nextval s;
adamc@471 14 dml (INSERT INTO t (Id, Data) VALUES ({[id]}, {[d]}));
adamc@419 15 return id
adamc@419 16
adamc@419 17 fun read r =
adamc@471 18 o <- oneOrNoRows (SELECT t.Data FROM t WHERE t.Id = {[r]});
adamc@501 19 case o of
adamc@419 20 None => error <xml>You already deleted that ref!</xml>
adamc@501 21 | Some r => return r.T.Data
adamc@419 22
adamc@419 23 fun write r d =
adamc@471 24 dml (UPDATE t SET Data = {[d]} WHERE Id = {[r]})
adamc@419 25
adamc@419 26 fun delete r =
adamc@471 27 dml (DELETE FROM t WHERE Id = {[r]})
adamc@420 28
adamc@419 29 end