-field_readers["list-multi"] =
- function (field_tag)
- local result = {};
- for value_tag in field_tag:childtags() do
- if value_tag.name == "value" then
- result[#result+1] = value_tag[1];
- end
+local boolean_values = {
+ ["1"] = true, ["true"] = true,
+ ["0"] = false, ["false"] = false,
+};
+
+field_readers["boolean"] =
+ function (field_tag, required)
+ local raw_value = field_tag:get_child_text("value");
+ local value = boolean_values[raw_value ~= nil and raw_value];
+ if value ~= nil then
+ return value;
+ elseif raw_value then
+ return nil, "Invalid boolean representation";
+ elseif required then
+ return nil, "Required value missing";