summaryrefslogtreecommitdiff
path: root/util.lua
diff options
context:
space:
mode:
authorDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2026-02-02 14:14:28 -0800
committerDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2026-02-02 14:14:28 -0800
commit61dba9967975d4a48d33776449c627c11f9bd365 (patch)
tree7a8f04177e8775e97b6ec323e5436cba777bcecf /util.lua
parent38c20d9a76e69087d3d1fe06335d8b3dc8571295 (diff)
downloadmpv-iptv-menu-61dba9967975d4a48d33776449c627c11f9bd365.tar.gz
mpv-iptv-menu-61dba9967975d4a48d33776449c627c11f9bd365.tar.xz
support config overrides
Diffstat (limited to 'util.lua')
-rw-r--r--util.lua30
1 files changed, 30 insertions, 0 deletions
diff --git a/util.lua b/util.lua
index 99bba7b..d678a9e 100644
--- a/util.lua
+++ b/util.lua
@@ -125,6 +125,36 @@ function util.stable_kmerge(t, u, k)
return res
end
+function util.flatten_table(src, dst, prefix)
+ local dst = dst or {}
+ for k, v in pairs(src) do
+ local k = prefix and prefix .. '.' .. k or k
+ if type(v) == 'table' then
+ util.flatten_table(v, dst, k)
+ else
+ dst[k] = v
+ end
+ end
+ return dst
+end
+
+function util.unflatten_table(src, dst)
+ local dst = dst or {}
+ for k, v in pairs(src) do
+ local t = dst
+ local prev
+ for curr in (k .. '.'):gmatch('(.-)%.') do
+ if prev then
+ t[prev] = t[prev] or {}
+ t = t[prev]
+ end
+ prev = curr
+ end
+ t[prev] = v
+ end
+ return dst
+end
+
function util.str_seek_prev_char(str, pos)
return util.utf8_seek(str, pos, -1)
end