adamc@1007: open Meta adamc@1007: adamc@1007: val title = string "Title" adamc@1007: val abstract = textarea "Abstract" adamc@1011: adamc@1011: fun charIn s = adamc@1011: if String.length s = 0 then adamc@1011: error Impossible: Empty option value adamc@1011: else adamc@1011: String.sub s 0 adamc@1011: adamc@1011: con dropdown = (char, string) adamc@1011: fun dropdown name opts = {Nam = name, adamc@1011: Show = txt, adamc@1011: Widget = fn [nm :: Name] => adamc@1011: {List.mapX (fn x => ) opts} adamc@1011: , adamc@1011: WidgetPopulated = fn [nm :: Name] v => adamc@1011: {List.mapX (fn x => ) opts} adamc@1011: , adamc@1011: Parse = charIn, adamc@1011: Inject = _} adamc@1011: