Software /
code /
prosody
Comparison
util/dataforms.lua @ 6829:22522443982f
util.dataforms: Refactor parsing to reuse simple text parser instead of duplicate code
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 12 Sep 2015 17:40:14 +0200 |
parent | 6777:5de6b93d0190 |
child | 6830:e08f5d081a6c |
comparison
equal
deleted
inserted
replaced
6825:766aa454c79f | 6829:22522443982f |
---|---|
143 return data, errors; | 143 return data, errors; |
144 end | 144 end |
145 return data; | 145 return data; |
146 end | 146 end |
147 | 147 |
148 field_readers["text-single"] = | 148 local function simple_text(field_tag, required) |
149 function (field_tag, required) | 149 local data = field_tag:get_child_text("value"); |
150 local data = field_tag:get_child_text("value"); | 150 if data and #data > 0 then |
151 if data and #data > 0 then | 151 return data |
152 return data | 152 elseif required then |
153 elseif required then | 153 return nil, "Required value missing"; |
154 return nil, "Required value missing"; | 154 end |
155 end | 155 end |
156 end | 156 |
157 | 157 field_readers["text-single"] = simple_text; |
158 field_readers["text-private"] = | 158 |
159 field_readers["text-single"]; | 159 field_readers["text-private"] = simple_text; |
160 | 160 |
161 field_readers["jid-single"] = | 161 field_readers["jid-single"] = |
162 function (field_tag, required) | 162 function (field_tag, required) |
163 local raw_data = field_tag:get_child_text("value") | 163 local raw_data, err = simple_text(field_tag, required); |
164 if not raw_data then return raw_data, err; end | |
164 local data = jid_prep(raw_data); | 165 local data = jid_prep(raw_data); |
165 if data and #data > 0 then | 166 if not data then |
166 return data | |
167 elseif raw_data then | |
168 return nil, "Invalid JID: " .. raw_data; | 167 return nil, "Invalid JID: " .. raw_data; |
169 elseif required then | 168 end |
170 return nil, "Required value missing"; | 169 return data; |
171 end | |
172 end | 170 end |
173 | 171 |
174 field_readers["jid-multi"] = | 172 field_readers["jid-multi"] = |
175 function (field_tag, required) | 173 function (field_tag, required) |
176 local result = {}; | 174 local result = {}; |
210 data = t_concat(data, "\n"); | 208 data = t_concat(data, "\n"); |
211 end | 209 end |
212 return data, err; | 210 return data, err; |
213 end | 211 end |
214 | 212 |
215 field_readers["list-single"] = | 213 field_readers["list-single"] = simple_text; |
216 field_readers["text-single"]; | |
217 | 214 |
218 local boolean_values = { | 215 local boolean_values = { |
219 ["1"] = true, ["true"] = true, | 216 ["1"] = true, ["true"] = true, |
220 ["0"] = false, ["false"] = false, | 217 ["0"] = false, ["false"] = false, |
221 }; | 218 }; |
222 | 219 |
223 field_readers["boolean"] = | 220 field_readers["boolean"] = |
224 function (field_tag, required) | 221 function (field_tag, required) |
225 local raw_value = field_tag:get_child_text("value"); | 222 local raw_value, err = simple_text(field_tag, required); |
226 local value = boolean_values[raw_value ~= nil and raw_value]; | 223 if not raw_value then return raw_value, err; end |
227 if value ~= nil then | 224 local value = boolean_values[raw_value]; |
228 return value; | 225 if value == nil then |
229 elseif raw_value then | 226 return nil, "Invalid boolean representation:" .. raw_value; |
230 return nil, "Invalid boolean representation"; | 227 end |
231 elseif required then | 228 return value; |
232 return nil, "Required value missing"; | |
233 end | |
234 end | 229 end |
235 | 230 |
236 field_readers["hidden"] = | 231 field_readers["hidden"] = |
237 function (field_tag) | 232 function (field_tag) |
238 return field_tag:get_child_text("value"); | 233 return field_tag:get_child_text("value"); |