# HG changeset patch # User Kim Alvefur # Date 1535757886 -7200 # Node ID 68694c1bd9604a5937f2c1e52db9901630d24819 # Parent 2d82a926826f61ef32d480f6a15e5dcc23bff875 util.dataforms: Allow field names to be different from the 'var' attribute This should allow the usage of long prefixes and namespace-like names to be contained to the XML representation of the form, so that the code can use more convenient names. diff -r 2d82a926826f -r 68694c1bd960 spec/util_dataforms_spec.lua --- a/spec/util_dataforms_spec.lua Mon Sep 03 17:45:30 2018 +0100 +++ b/spec/util_dataforms_spec.lua Sat Sep 01 01:24:46 2018 +0200 @@ -386,5 +386,20 @@ assert.same(expect, data, "got back the same data"); end); end); + + describe("field 'var' property", function () + it("works as expected", function () + local f = dataforms.new { + { + var = "someprefix#the-field", + name = "the_field", + type = "text-single", + } + }; + local x = f:form({the_field = "hello"}); + assert.equal("someprefix#the-field", x:find"field@var"); + assert.equal("hello", x:find"field/value#"); + end); + end); end); diff -r 2d82a926826f -r 68694c1bd960 util/dataforms.lua --- a/util/dataforms.lua Mon Sep 03 17:45:30 2018 +0100 +++ b/util/dataforms.lua Sat Sep 01 01:24:46 2018 +0200 @@ -42,7 +42,7 @@ for _, field in ipairs(layout) do local field_type = field.type or "text-single"; -- Add field tag - form:tag("field", { type = field_type, var = field.name, label = formtype ~= "submit" and field.label or nil }); + form:tag("field", { type = field_type, var = field.var or field.name, label = formtype ~= "submit" and field.label or nil }); if formtype ~= "submit" then if field.desc then @@ -150,7 +150,7 @@ for _, field in ipairs(layout) do local tag; for field_tag in stanza:childtags("field") do - if field.name == field_tag.attr.var then + if (field.var or field.name) == field_tag.attr.var then tag = field_tag; break; end