adamc@1004: con meta = fn (db :: Type, widget :: Type) => adamc@1004: {Nam : string, adamc@1004: Show : db -> xbody, adamc@1004: Widget : nm :: Name -> xml form [] [nm = widget], adamc@1004: WidgetPopulated : nm :: Name -> db -> xml form [] [nm = widget], adamc@1004: Parse : widget -> db, adamc@1004: Inject : sql_injectable db} adamc@1004: adamc@1004: fun default [t] (sh : show t) (rd : read t) (inj : sql_injectable t) name : meta (t, string) = adamc@1004: {Nam = name, adamc@1004: Show = txt, adamc@1004: Widget = fn [nm :: Name] => , adamc@1004: WidgetPopulated = fn [nm :: Name] n => adamc@1004: , adamc@1004: Parse = readError, adamc@1004: Inject = _} adamc@1004: adamc@1004: val int = default adamc@1004: val float = default adamc@1004: val string = default adamc@1004: fun bool name = {Nam = name, adamc@1004: Show = txt, adamc@1004: Widget = fn [nm :: Name] => , adamc@1004: WidgetPopulated = fn [nm :: Name] b => adamc@1004: , adamc@1004: Parse = fn x => x, adamc@1004: Inject = _}