summaryrefslogtreecommitdiff
path: root/script-beta/src/brave/work.lua
diff options
context:
space:
mode:
Diffstat (limited to 'script-beta/src/brave/work.lua')
-rw-r--r--script-beta/src/brave/work.lua55
1 files changed, 55 insertions, 0 deletions
diff --git a/script-beta/src/brave/work.lua b/script-beta/src/brave/work.lua
new file mode 100644
index 00000000..dba27808
--- /dev/null
+++ b/script-beta/src/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)