summaryrefslogtreecommitdiff
path: root/server/src/matcher/find_result.lua
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/matcher/find_result.lua')
-rw-r--r--server/src/matcher/find_result.lua37
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