1

I'm trying to modify each element in the dynamic list and if those modification went ok and the validation passed, i want to commit the updated variable and not the original. example: i pass "A B C" and "1 2 3 ABC" and i want the function to save them as "ABC" and "123ABC" i'm not having a problem with the validation and deleting spaces (doing the modification) the issue is i don't know how to replace the old strings with the new strings.

i can't post the code but this is a general idea of what i'm doing

list = s:option(DynamicList, "text", "text")
list.parse = function(self, section, novld, ...)
 local listString = luci.http.formvalue(path to the list)
 for key, value in pairs(listString) do
   -- change the value here and delete spaces--
   -- validate the new value --
 end
 Value.parse(self, section, novld, ...)
end

this is the general idea, and i tried to use Value.write(self, section, list) where the list is the same old list but each time i modify a value i update it in the list like this, list[key] = value (after modofication) the thing is, the write function has no effect if the function reached the Value.parse.

shadow
  • 767
  • 3
  • 8
  • 20

1 Answers1

0

this was the solution if anyone may need it.

list.write = function(self, section, value)
local list
if type(value) == "table" then
    list = value
elseif value ~= nil then
    list = { value }
else
    return -- should not happen, .remove() should have been called then
end
for _, item in ipairs(list) do
    list[_] = strip_spaces(item)
end
return Value.write(self, section, list)
end

for more details see this post: link

shadow
  • 767
  • 3
  • 8
  • 20