diff options
Diffstat (limited to 'server-beta/src/core/hover')
-rw-r--r-- | server-beta/src/core/hover/arg.lua | 20 | ||||
-rw-r--r-- | server-beta/src/core/hover/init.lua | 56 | ||||
-rw-r--r-- | server-beta/src/core/hover/label.lua | 103 | ||||
-rw-r--r-- | server-beta/src/core/hover/name.lua | 64 | ||||
-rw-r--r-- | server-beta/src/core/hover/return.lua | 34 | ||||
-rw-r--r-- | server-beta/src/core/hover/table.lua | 35 |
6 files changed, 0 insertions, 312 deletions
diff --git a/server-beta/src/core/hover/arg.lua b/server-beta/src/core/hover/arg.lua deleted file mode 100644 index be344488..00000000 --- a/server-beta/src/core/hover/arg.lua +++ /dev/null @@ -1,20 +0,0 @@ -local guide = require 'parser.guide' -local vm = require 'vm' - -local function asFunction(source) - if not source.args then - return '' - end - local args = {} - for i = 1, #source.args do - local arg = source.args[i] - args[i] = ('%s: %s'):format(guide.getName(arg), vm.getType(arg)) - end - return table.concat(args, ', ') -end - -return function (source) - if source.type == 'function' then - return asFunction(source) - end -end diff --git a/server-beta/src/core/hover/init.lua b/server-beta/src/core/hover/init.lua deleted file mode 100644 index b99c14b2..00000000 --- a/server-beta/src/core/hover/init.lua +++ /dev/null @@ -1,56 +0,0 @@ -local files = require 'files' -local guide = require 'parser.guide' -local vm = require 'vm' -local getLabel = require 'core.hover.label' - -local function getHoverAsFunction(source) - local values = vm.getValue(source) - local labels = {} - for _, value in ipairs(values) do - if value.type == 'function' then - labels[#labels+1] = getLabel(value.source) - end - end - - local label = table.concat(labels, '\n') - return { - label = label, - source = source, - } -end - -local function getHoverAsValue(source) - local label = getLabel(source) - return { - label = label, - source = source, - } -end - -local function getHover(source) - local isFunction = vm.hasType(source, 'function') - if isFunction then - return getHoverAsFunction(source) - else - return getHoverAsValue(source) - end -end - -return function (uri, offset) - local ast = files.getAst(uri) - if not ast then - return nil - end - local hover = guide.eachSourceContain(ast.ast, offset, function (source) - if source.type == 'local' - or source.type == 'setlocal' - or source.type == 'getlocal' - or source.type == 'setglobal' - or source.type == 'getglobal' - or source.type == 'field' - or source.type == 'method' then - return getHover(source) - end - end) - return hover -end diff --git a/server-beta/src/core/hover/label.lua b/server-beta/src/core/hover/label.lua deleted file mode 100644 index 72ce60f4..00000000 --- a/server-beta/src/core/hover/label.lua +++ /dev/null @@ -1,103 +0,0 @@ -local buildName = require 'core.hover.name' -local buildArg = require 'core.hover.arg' -local buildReturn = require 'core.hover.return' -local buildTable = require 'core.hover.table' -local vm = require 'vm' -local util = require 'utility' - -local function asFunction(source) - local name = buildName(source) - local arg = buildArg(source) - local rtn = buildReturn(source) - local lines = {} - lines[1] = ('function %s(%s)'):format(name, arg) - lines[2] = rtn - return table.concat(lines, '\n') -end - -local function asLocal(source) - local name = buildName(source) - local type = vm.getType(source) - local literal = vm.getLiteral(source) - if type == 'table' then - type = buildTable(source) - end - if literal == nil then - return ('local %s: %s'):format(name, type) - else - return ('local %s: %s = %s'):format(name, type, util.viewLiteral(literal)) - end -end - -local function asGlobal(source) - local name = buildName(source) - local type = vm.getType(source) - local literal = vm.getLiteral(source) - if type == 'table' then - type = buildTable(source) - end - if literal == nil then - return ('global %s: %s'):format(name, type) - else - return ('global %s: %s = %s'):format(name, type, util.viewLiteral(literal)) - end -end - -local function isGlobalField(source) - if source.type == 'field' - or source.type == 'method' then - source = source.parent - end - if source.type == 'setfield' - or source.type == 'getfield' - or source.type == 'setmethod' - or source.type == 'getmethod' - or source.type == 'tablefield' then - local node = source.node - if node.type == 'setglobal' - or node.type == 'getglobal' then - return true - end - return isGlobalField(node) - else - return false - end -end - -local function asField(source) - if isGlobalField(source) then - return asGlobal(source) - end - local name = buildName(source) - local type = vm.getType(source) - local literal = vm.getLiteral(source) - if type == 'table' then - type = buildTable(source) - end - if literal == nil then - return ('field %s: %s'):format(name, type) - else - return ('field %s: %s = %s'):format(name, type, util.viewLiteral(literal)) - end -end - -return function (source) - if source.type == 'function' then - return asFunction(source) - elseif source.type == 'local' - or source.type == 'getlocal' - or source.type == 'setlocal' then - return asLocal(source) - elseif source.type == 'setglobal' - or source.type == 'getglobal' then - return asGlobal(source) - elseif source.type == 'getfield' - or source.type == 'setfield' - or source.type == 'getmethod' - or source.type == 'setmethod' - or source.type == 'tablefield' - or source.type == 'field' - or source.type == 'method' then - return asField(source) - end -end diff --git a/server-beta/src/core/hover/name.lua b/server-beta/src/core/hover/name.lua deleted file mode 100644 index a22a8b5a..00000000 --- a/server-beta/src/core/hover/name.lua +++ /dev/null @@ -1,64 +0,0 @@ -local guide = require 'parser.guide' -local vm = require 'vm' - -local function asLocal(source) - return guide.getName(source) -end - -local function asMethod(source) - local class = vm.eachField(source.node, function (info) - if info.key == 's|type' or info.key == 's|__name' or info.key == 's|name' then - if info.value and info.value.type == 'string' then - return info.value[1] - end - end - end) - local node = class or guide.getName(source.node) or '?' - local method = guide.getName(source) - return ('%s:%s'):format(node, method) -end - -local function asField(source) - local class = vm.eachField(source.node, function (info) - if info.key == 's|type' or info.key == 's|__name' or info.key == 's|name' then - if info.value and info.value.type == 'string' then - return info.value[1] - end - end - end) - local node = class or guide.getName(source.node) or '?' - local method = guide.getName(source) - return ('%s.%s'):format(node, method) -end - -local function asGlobal(source) - return guide.getName(source) -end - -local function buildName(source) - if source.type == 'local' - or source.type == 'getlocal' - or source.type == 'setlocal' then - return asLocal(source) or '' - end - if source.type == 'setglobal' - or source.type == 'getglobal' then - return asGlobal(source) or '' - end - if source.type == 'setmethod' - or source.type == 'getmethod' then - return asMethod(source) or '' - end - if source.type == 'setfield' - or source.tyoe == 'getfield' - or source.type == 'tablefield' then - return asField(source) or '' - end - local parent = source.parent - if parent then - return buildName(parent) - end - return '' -end - -return buildName diff --git a/server-beta/src/core/hover/return.lua b/server-beta/src/core/hover/return.lua deleted file mode 100644 index c22626a6..00000000 --- a/server-beta/src/core/hover/return.lua +++ /dev/null @@ -1,34 +0,0 @@ -local guide = require 'parser.guide' -local vm = require 'vm' - -local function asFunction(source) - if not source.returns then - return nil - end - local returns = {} - for _, rtn in ipairs(source.returns) do - for i = 1, #rtn do - local values = vm.getValue(rtn[i]) - returns[#returns+1] = values - end - break - end - if #returns == 0 then - return nil - end - local lines = {} - for i = 1, #returns do - if i == 1 then - lines[i] = (' -> %s'):format(vm.viewType(returns[i])) - else - lines[i] = ('% 3d. %s'):format(i, returns[i]) - end - end - return table.concat(lines, '\n') -end - -return function (source) - if source.type == 'function' then - return asFunction(source) - end -end diff --git a/server-beta/src/core/hover/table.lua b/server-beta/src/core/hover/table.lua deleted file mode 100644 index 9ed86692..00000000 --- a/server-beta/src/core/hover/table.lua +++ /dev/null @@ -1,35 +0,0 @@ -local vm = require 'vm' - -local function checkClass(source) -end - -return function (source) - local fields = {} - local class - vm.eachField(source, function (info) - if info.key == 's|type' or info.key == 's|__name' or info.key == 's|name' then - if info.value and info.value.type == 'string' then - class = info.value[1] - end - end - local type = vm.getType(info.source) - fields[#fields+1] = ('%s'):format(type) - end) - local fieldsBuf - if #fields == 0 then - fieldsBuf = '{}' - else - local lines = {} - lines[#lines+1] = '{' - for _, field in ipairs(fields) do - lines[#lines+1] = ' ' .. field - end - lines[#lines+1] = '}' - fieldsBuf = table.concat(lines, '\n') - end - if class then - return ('%s %s'):format(class, fieldsBuf) - else - return fieldsBuf - end -end |