aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--spec/util_dataforms_spec.lua6
-rw-r--r--util/dataforms.lua4
2 files changed, 9 insertions, 1 deletions
diff --git a/spec/util_dataforms_spec.lua b/spec/util_dataforms_spec.lua
index 426dce33..e0a9bb9b 100644
--- a/spec/util_dataforms_spec.lua
+++ b/spec/util_dataforms_spec.lua
@@ -458,6 +458,12 @@ describe("util.dataforms", function ()
assert.table(e);
assert.string(e.number);
end);
+
+ it("serializes largeer ints okay", function ()
+ local x = f:form{number=1125899906842624}
+ assert.equal("1125899906842624", x:find("field/value#"))
+ end);
+
end)
describe("datetime", function ()
diff --git a/util/dataforms.lua b/util/dataforms.lua
index 6bd44bdc..4daebbcb 100644
--- a/util/dataforms.lua
+++ b/util/dataforms.lua
@@ -107,8 +107,10 @@ function form_t.form(layout, data, formtype)
value = datetime.datetime(value);
elseif field_type == "boolean" then
value = value ~= 0;
+ elseif field.datatype == "xs:double" or field.datatype == "xs:decimal" then
+ value = ("%f"):format(value);
else
- value = ("%g"):format(value);
+ value = ("%d"):format(value);
end
end
-- Add value, depending on type