summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorspag <spag@golwen.net>2013-01-29 16:28:13 +0100
committerspag <spag@golwen.net>2013-01-29 16:28:13 +0100
commitbebf1d99a7a81ffd5cc3276acbf8b0317182a1af (patch)
tree9934e1223e8945d8400efb6e89c0afd4d89f9f75 /misc
parent2f35c3caadf8932a6bdebc87259a4cf1412dc410 (diff)
set variable function added
Diffstat (limited to 'misc')
-rw-r--r--misc/freeswitch/scripts/common/str.lua17
1 files changed, 17 insertions, 0 deletions
diff --git a/misc/freeswitch/scripts/common/str.lua b/misc/freeswitch/scripts/common/str.lua
index 793c191..72ff388 100644
--- a/misc/freeswitch/scripts/common/str.lua
+++ b/misc/freeswitch/scripts/common/str.lua
@@ -18,6 +18,23 @@ function try(array, arguments)
return result;
end
+
+function set(array, arguments, value)
+ local nop, arguments_count = arguments:gsub('%.', '');
+ local structure = array;
+ arguments:gsub('([^%.]+)', function(entry)
+ if arguments_count <= 0 then
+ structure[entry] = value;
+ elseif type(structure[entry]) == 'table' then
+ structure = structure[entry];
+ else
+ structure[entry] = {};
+ structure = structure[entry];
+ end
+ arguments_count = arguments_count - 1;
+ end);
+end
+
-- to number
function to_n(value)
value = tostring(value):gsub('[^%d%.%+%-]', '');