From 8bda7384660c06a83e95e106be56ff4fcbe090e2 Mon Sep 17 00:00:00 2001 From: lethosor Date: Sun, 7 May 2017 16:31:30 -0400 Subject: [PATCH] df_expr_to_ref: support integer array indices --- library/lua/utils.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/library/lua/utils.lua b/library/lua/utils.lua index 07db41808..a6007a08f 100644 --- a/library/lua/utils.lua +++ b/library/lua/utils.lua @@ -659,15 +659,17 @@ df_env = df_shortcut_env() function df_expr_to_ref(expr) expr = expr:gsub('%["(.-)"%]', function(field) return '.' .. field end) :gsub('%[\'(.-)\'%]', function(field) return '.' .. field end) + :gsub('%[(%d+)]', function(field) return '.' .. field end) local parts = split_string(expr, '%.') local obj = df_env[parts[1]] for i = 2, #parts do - local cur = obj[parts[i]] + local key = tonumber(parts[i]) or parts[i] + local cur = obj[key] if i == #parts and ((type(cur) ~= 'userdata') or type(cur) == 'userdata' and getmetatable(cur) == nil) then - obj = obj:_field(parts[i]) + obj = obj:_field(key) else - obj = obj[parts[i]] + obj = obj[key] end end return obj