aboutsummaryrefslogtreecommitdiffstats
path: root/teal-src/util/dataforms.d.tl
diff options
context:
space:
mode:
Diffstat (limited to 'teal-src/util/dataforms.d.tl')
-rw-r--r--teal-src/util/dataforms.d.tl52
1 files changed, 52 insertions, 0 deletions
diff --git a/teal-src/util/dataforms.d.tl b/teal-src/util/dataforms.d.tl
new file mode 100644
index 00000000..9e4170fa
--- /dev/null
+++ b/teal-src/util/dataforms.d.tl
@@ -0,0 +1,52 @@
+local stanza_t = require "util.stanza".stanza_t
+
+local enum form_type
+ "form"
+ "submit"
+ "cancel"
+ "result"
+end
+
+local enum field_type
+ "boolean"
+ "fixed"
+ "hidden"
+ "jid-multi"
+ "jid-single"
+ "list-multi"
+ "list-single"
+ "text-multi"
+ "text-private"
+ "text-single"
+end
+
+local record form_field
+
+ type : field_type
+ var : string -- protocol name
+ name : string -- internal name
+
+ label : string
+ desc : string
+
+ datatype : string
+ range_min : number
+ range_max : number
+
+ value : any -- depends on field_type
+ options : table
+end
+
+local record dataform
+ title : string
+ instructions : string
+ { form_field } -- XXX https://github.com/teal-language/tl/pull/415
+
+ form : function ( dataform, table, form_type ) : stanza_t
+end
+
+local record lib
+ new : function ( dataform ) : dataform
+end
+
+return lib