diff options
Diffstat (limited to 'server/src/matcher/find_result.lua')
-rw-r--r-- | server/src/matcher/find_result.lua | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/server/src/matcher/find_result.lua b/server/src/matcher/find_result.lua new file mode 100644 index 00000000..b9313510 --- /dev/null +++ b/server/src/matcher/find_result.lua @@ -0,0 +1,37 @@ +local function isContainPos(obj, pos) + return obj.start <= pos and obj.finish + 1 >= pos +end + +return function (results, pos) + for _, var in ipairs(results.vars) do + for _, info in ipairs(var) do + if isContainPos(info.source, pos) then + return { + type = 'var', + var = var, + } + end + end + end + for _, dots in ipairs(results.dots) do + for _, info in ipairs(dots) do + if isContainPos(info.source, pos) then + return { + type = 'dots', + dots = dots, + } + end + end + end + for _, label in ipairs(results.labels) do + for _, info in ipairs(label) do + if isContainPos(info.source, pos) then + return { + type = 'label', + label = label, + } + end + end + end + return nil +end |