util.dataforms: Track which fields are included in a form
authorKim Alvefur <zash@zash.se>
Tue, 8 Dec 2015 19:16:49 +0000 (20:16 +0100)
committerKim Alvefur <zash@zash.se>
Tue, 8 Dec 2015 19:16:49 +0000 (20:16 +0100)
util/dataforms.lua

index 05846ab3a5b58614df89ba1c779ecc848d096b36..79b4d1a41b923cf6bd6cb539102c2cf20a968ace 100644 (file)
@@ -118,6 +118,7 @@ local field_readers = {};
 function form_t.data(layout, stanza)
        local data = {};
        local errors = {};
+       local present = {};
 
        for _, field in ipairs(layout) do
                local tag;
@@ -133,6 +134,7 @@ function form_t.data(layout, stanza)
                                errors[field.name] = "Required value missing";
                        end
                else
+                       present[field.name] = true;
                        local reader = field_readers[field.type];
                        if reader then
                                data[field.name], errors[field.name] = reader(tag, field.required);
@@ -140,9 +142,9 @@ function form_t.data(layout, stanza)
                end
        end
        if next(errors) then
-               return data, errors;
+               return data, errors, present;
        end
-       return data;
+       return data, nil, present;
 end
 
 local function simple_text(field_tag, required)