diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2019-11-23 00:05:30 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2019-11-23 00:05:30 +0800 |
commit | 6da2b175e20ed3c03b0dfcfc9046de1e0e5d4444 (patch) | |
tree | fdc22d78150fd1c5edc46732c8b151ccfefb519f /script-beta/brave/work.lua | |
parent | d0ff66c9abe9d6abbca12fd811e0c3cb69c1033a (diff) | |
download | lua-language-server-6da2b175e20ed3c03b0dfcfc9046de1e0e5d4444.zip |
正路目录
Diffstat (limited to 'script-beta/brave/work.lua')
-rw-r--r-- | script-beta/brave/work.lua | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/script-beta/brave/work.lua b/script-beta/brave/work.lua new file mode 100644 index 00000000..dba27808 --- /dev/null +++ b/script-beta/brave/work.lua @@ -0,0 +1,55 @@ +local brave = require 'brave.brave' +local jsonrpc = require 'jsonrpc' +local parser = require 'parser' +local fs = require 'bee.filesystem' +local furi = require 'file-uri' +local util = require 'utility' + +brave.on('loadProto', function () + while true do + local proto = jsonrpc.decode(io.read, log.error) + if proto then + brave.push('proto', proto) + end + end +end) + +brave.on('compile', function (text) + local state, err = parser:compile(text, 'lua', 'Lua 5.4') + if not state then + log.error(err) + return + end + local lines = parser:lines(text) + return { + root = state.root, + value = state.value, + errs = state.errs, + lines = lines, + } +end) + +brave.on('listDirectory', function (uri) + local path = fs.path(furi.decode(uri)) + local uris = {} + for child in path:list_directory() do + local childUri = furi.encode(child:string()) + uris[#uris+1] = childUri + end + return uris +end) + +brave.on('isDirectory', function (uri) + local path = fs.path(furi.decode(uri)) + return fs.is_directory(path) +end) + +brave.on('loadFile', function (uri) + local filename = furi.decode(uri) + return util.loadFile(filename) +end) + +brave.on('saveFile', function (params) + local filename = furi.decode(params.uri) + return util.saveFile(filename, params.text) +end) |