Mercurial > urweb
annotate demo/more/orm.urs @ 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 | bb3fc575cfe7 |
children |
rev | line source |
---|---|
adamc@990 | 1 con link :: (Type * Type) -> Type |
adamc@990 | 2 val noParent : t ::: Type -> link (t, unit) |
adamc@987 | 3 |
adamc@1002 | 4 con meta = fn (col :: Type, parent :: Type) => { |
adamc@1002 | 5 Link : link (col, parent), |
adamc@1002 | 6 Inj : sql_injectable col |
adamc@987 | 7 } |
adamc@987 | 8 |
adamc@991 | 9 val local : t :: Type -> sql_injectable t -> meta (t, unit) |
adamc@991 | 10 |
adamc@987 | 11 functor Table(M : sig |
adamc@990 | 12 con cols :: {(Type * Type)} |
adamc@987 | 13 val cols : $(map meta cols) |
adamc@987 | 14 constraint [Id] ~ cols |
adamc@987 | 15 val folder : folder cols |
adamc@987 | 16 end) : sig |
adamc@987 | 17 type id |
adamc@990 | 18 type row' = $(map fst M.cols) |
adamc@990 | 19 type row = $([Id = id] ++ map fst M.cols) |
adamc@990 | 20 |
adamc@987 | 21 val inj : sql_injectable id |
adamc@990 | 22 val id : meta (id, row) |
adamc@987 | 23 |
adamc@990 | 24 val create : row' -> transaction row |
adamc@988 | 25 val delete : row -> transaction unit |
adamc@988 | 26 val save : row -> transaction unit |
adamc@988 | 27 val lookup : id -> transaction (option row) |
adamc@988 | 28 val list : transaction (list row) |
adamc@989 | 29 |
adamc@989 | 30 con col :: Type -> Type |
adamc@989 | 31 val idCol : col id |
adamc@1002 | 32 val cols : $(map (fn (colm :: Type, parent :: Type) => |
adamc@1002 | 33 {Col : col colm, |
adamc@1002 | 34 Parent : row -> transaction (option parent)}) M.cols) |
adamc@989 | 35 |
adamc@989 | 36 type filter |
adamc@990 | 37 val find : filter -> transaction (option row) |
adamc@989 | 38 val search : filter -> transaction (list row) |
adamc@989 | 39 |
adamc@989 | 40 val eq : t ::: Type -> col t -> t -> filter |
adamc@989 | 41 val ne : t ::: Type -> col t -> t -> filter |
adamc@989 | 42 val lt : t ::: Type -> col t -> t -> filter |
adamc@989 | 43 val le : t ::: Type -> col t -> t -> filter |
adamc@989 | 44 val gt : t ::: Type -> col t -> t -> filter |
adamc@989 | 45 val ge : t ::: Type -> col t -> t -> filter |
adamc@989 | 46 |
adamc@989 | 47 val _and : filter -> filter -> filter |
adamc@989 | 48 val or : filter -> filter -> filter |
adamc@987 | 49 end |