summaryrefslogtreecommitdiff
path: root/demo/more/meta.ur
diff options
context:
space:
mode:
Diffstat (limited to 'demo/more/meta.ur')
-rw-r--r--demo/more/meta.ur91
1 files changed, 0 insertions, 91 deletions
diff --git a/demo/more/meta.ur b/demo/more/meta.ur
deleted file mode 100644
index b8a3d584..00000000
--- a/demo/more/meta.ur
+++ /dev/null
@@ -1,91 +0,0 @@
-con meta = fn (db :: Type, widget :: Type) =>
- {Nam : string,
- Show : db -> xbody,
- Widget : nm :: Name -> xml form [] [nm = widget],
- WidgetPopulated : nm :: Name -> db -> xml form [] [nm = widget],
- Parse : widget -> db,
- Inject : sql_injectable db}
-
-fun default [t] (sh : show t) (rd : read t) (inj : sql_injectable t) name : meta (t, string) =
- {Nam = name,
- Show = txt,
- Widget = fn [nm :: Name] => <xml><textbox{nm}/></xml>,
- WidgetPopulated = fn [nm :: Name] n =>
- <xml><textbox{nm} value={show n}/></xml>,
- Parse = readError,
- Inject = _}
-
-val int = default
-val float = default
-val string = default
-fun bool name = {Nam = name,
- Show = txt,
- Widget = fn [nm :: Name] => <xml><checkbox{nm}/></xml>,
- WidgetPopulated = fn [nm :: Name] b =>
- <xml><checkbox{nm} checked={b}/></xml>,
- Parse = fn x => x,
- Inject = _}
-
-fun textarea name = {Nam = name,
- Show = cdata,
- Widget = fn [nm :: Name] => <xml><br/><textarea{nm} rows={10} cols={80}/></xml>,
- WidgetPopulated = fn [nm :: Name] s => <xml><br/>
- <textarea{nm} rows={10} cols={80}>{[s]}</textarea>
- </xml>,
- Parse = fn s => s,
- Inject = _}
-
-fun allContent [ts ::: {(Type * Type)}] (r : $(map meta ts)) (vs : $(map fst ts)) (fl : folder ts) =
- foldRX2 [meta] [fst] [_]
- (fn [nm :: Name] [p :: (Type * Type)] [rest :: {(Type * Type)}] [[nm] ~ rest]
- (m : meta p) v =>
- <xml><b>{[m.Nam]}</b>: {m.Show v}<br/></xml>)
- [_] fl r vs
-
-fun allWidgets [ts ::: {(Type * Type)}] (r : $(map meta ts)) (fl : folder ts) =
- foldR [meta] [fn ts :: {(Type * Type)} => xml form [] (map snd ts)]
- (fn [nm :: Name] [t :: (Type * Type)] [rest :: {(Type * Type)}]
- [[nm] ~ rest] (col : meta t) (acc : xml form [] (map snd rest)) => <xml>
- <b>{[col.Nam]}</b>: {col.Widget [nm]}<br/>
- {useMore acc}
- </xml>)
- <xml/>
- [_] fl r
-
-fun allPopulated [ts ::: {(Type * Type)}] (r : $(map meta ts)) (vs : $(map fst ts)) (fl : folder ts) =
- foldR2 [meta] [fst] [fn cols :: {(Type * Type)} =>
- xml form [] (map snd cols)]
- (fn [nm :: Name] [p :: (Type * Type)] [rest :: {(Type * Type)}] [[nm] ~ rest]
- (m : meta p) v (acc : xml form [] (map snd rest)) =>
- <xml>
- {[m.Nam]}: {m.WidgetPopulated [nm] v}<br/>
- {useMore acc}
- </xml>)
- <xml/>
- [_] fl r vs
-
-fun allPopulatedTr [ts ::: {(Type * Type)}] (r : $(map meta ts)) (vs : $(map fst ts)) (fl : folder ts) =
- foldR2 [meta] [fst] [fn cols :: {(Type * Type)} =>
- xml [Body, Form, Tr] [] (map snd cols)]
- (fn [nm :: Name] [p :: (Type * Type)] [rest :: {(Type * Type)}] [[nm] ~ rest]
- (m : meta p) v (acc : xml [Body, Form, Tr] [] (map snd rest)) =>
- <xml>
- <td>{m.WidgetPopulated [nm] v}</td>
- {useMore acc}
- </xml>)
- <xml/>
- [_] fl r vs
-
-fun ensql [avail] [ts ::: {(Type * Type)}] (r : $(map meta ts)) (vs : $(map snd ts)) (fl : folder ts) =
- map2 [meta] [snd] [fn ts :: (Type * Type) => sql_exp avail [] [] ts.1]
- (fn [ts] meta v => @sql_inject meta.Inject (meta.Parse v))
- [_] fl r vs
-
-con private = fn t :: Type =>
- {Nam : string,
- Initialize : t,
- Show : t -> xbody,
- Inject : sql_injectable t}
-
-fun initialize [ts] (r : $(map private ts)) (fl : folder ts) =
- mp [private] [sql_exp [] [] []] (fn [t] r => @sql_inject r.Inject r.Initialize) [_] fl r