From 5dbca6bb3ed33cb8f19ea3871ce7ef9f07957088 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 21 Jun 2024 10:06:55 -0400 Subject: Move newer Lua modules to scripts/lua/require subdirectory. --- indra/newview/scripts/lua/LLChatListener.lua | 45 ------------- indra/newview/scripts/lua/login.lua | 19 ------ indra/newview/scripts/lua/mapargs.lua | 73 ---------------------- .../newview/scripts/lua/require/LLChatListener.lua | 45 +++++++++++++ indra/newview/scripts/lua/require/login.lua | 19 ++++++ indra/newview/scripts/lua/require/mapargs.lua | 73 ++++++++++++++++++++++ 6 files changed, 137 insertions(+), 137 deletions(-) delete mode 100644 indra/newview/scripts/lua/LLChatListener.lua delete mode 100644 indra/newview/scripts/lua/login.lua delete mode 100644 indra/newview/scripts/lua/mapargs.lua create mode 100644 indra/newview/scripts/lua/require/LLChatListener.lua create mode 100644 indra/newview/scripts/lua/require/login.lua create mode 100644 indra/newview/scripts/lua/require/mapargs.lua (limited to 'indra/newview/scripts/lua') diff --git a/indra/newview/scripts/lua/LLChatListener.lua b/indra/newview/scripts/lua/LLChatListener.lua deleted file mode 100644 index b4e90d272c..0000000000 --- a/indra/newview/scripts/lua/LLChatListener.lua +++ /dev/null @@ -1,45 +0,0 @@ -local fiber = require 'fiber' -local inspect = require 'inspect' -local leap = require 'leap' - -local LLChatListener = {} -local waitfor = {} -local listener_name = {} - -function LLChatListener:new() - local obj = setmetatable({}, self) - self.__index = self - obj.name = 'Chat_listener' - - return obj -end - -function LLChatListener:handleMessages(event_data) - print(inspect(event_data)) - return true -end - -function LLChatListener:start() - waitfor = leap.WaitFor:new(-1, self.name) - function waitfor:filter(pump, data) - if pump == "LLNearbyChat" then - return data - end - end - - fiber.launch(self.name, function() - event = waitfor:wait() - while event and self:handleMessages(event) do - event = waitfor:wait() - end - end) - - listener_name = leap.request(leap.cmdpump(), {op='listen', source='LLNearbyChat', listener="ChatListener", tweak=true}).listener -end - -function LLChatListener:stop() - leap.send(leap.cmdpump(), {op='stoplistening', source='LLNearbyChat', listener=listener_name}) - waitfor:close() -end - -return LLChatListener diff --git a/indra/newview/scripts/lua/login.lua b/indra/newview/scripts/lua/login.lua deleted file mode 100644 index 0d8591cace..0000000000 --- a/indra/newview/scripts/lua/login.lua +++ /dev/null @@ -1,19 +0,0 @@ -local UI = require 'UI' -local leap = require 'leap' - -local function login(username, password) - if username and password then - local userpath = '//username_combo/Combo Text Entry' - local passpath = '//password_edit' - -- first clear anything presently in those text fields - for _, path in pairs({userpath, passpath}) do - UI.click(path) - UI.keypress{keysym='Backsp', path=path} - end - UI.type{path=userpath, text=username} - UI.type{path=passpath, text=password} - end - leap.send('LLPanelLogin', {op='onClickConnect'}) -end - -return login diff --git a/indra/newview/scripts/lua/mapargs.lua b/indra/newview/scripts/lua/mapargs.lua deleted file mode 100644 index 45f5a9c556..0000000000 --- a/indra/newview/scripts/lua/mapargs.lua +++ /dev/null @@ -1,73 +0,0 @@ --- Allow a calling function to be passed a mix of positional arguments with --- keyword arguments. Reference them as fields of a table. --- Don't use this for a function that can accept a single table argument. --- mapargs() assumes that a single table argument means its caller was called --- with f{table constructor} syntax, and maps that table to the specified names. --- Usage: --- function f(...) --- local a = mapargs({'a1', 'a2', 'a3'}, ...) --- ... a.a1 ... etc. --- end --- f(10, 20, 30) -- a.a1 == 10, a.a2 == 20, a.a3 == 30 --- f{10, 20, 30} -- a.a1 == 10, a.a2 == 20, a.a3 == 30 --- f{a3=300, a1=100} -- a.a1 == 100, a.a2 == nil, a.a3 == 300 --- f{1, a3=3} -- a.a1 == 1, a.a2 == nil, a.a3 == 3 --- f{a3=3, 1} -- a.a1 == 1, a.a2 == nil, a.a3 == 3 -local function mapargs(names, ...) - local args = table.pack(...) - local posargs = {} - local keyargs = {} - -- For a mixed table, no Lua operation will reliably tell you how many - -- array items it contains, if there are any holes. Track that by hand. - -- We must be able to handle f(1, nil, 3) calls. - local maxpos = 0 - - -- For convenience, allow passing 'names' as a string 'n0,n1,...' - if type(names) == 'string' then - names = string.split(names, ',') - end - - if not (args.n == 1 and type(args[1]) == 'table') then - -- If caller passes more than one argument, or if the first argument - -- is not a table, then it's classic positional function-call syntax: - -- f(first, second, etc.). In that case we need not bother teasing - -- apart positional from keyword arguments. - posargs = args - maxpos = args.n - else - -- Single table argument implies f{mixed} syntax. - -- Tease apart positional arguments from keyword arguments. - for k, v in pairs(args[1]) do - if type(k) == 'number' then - posargs[k] = v - maxpos = math.max(maxpos, k) - else - if table.find(names, k) == nil then - error('unknown keyword argument ' .. tostring(k)) - end - keyargs[k] = v - end - end - end - - -- keyargs already has keyword arguments in place, just fill in positionals - args = keyargs - -- Don't exceed the number of parameter names. Loop explicitly over every - -- index value instead of using ipairs() so we can support holes (nils) in - -- posargs. - for i = 1, math.min(#names, maxpos) do - if posargs[i] ~= nil then - -- As in Python, make it illegal to pass an argument both positionally - -- and by keyword. This implementation permits func(17, first=nil), a - -- corner case about which I don't particularly care. - if args[names[i]] ~= nil then - error(string.format('parameter %s passed both positionally and by keyword', - tostring(names[i]))) - end - args[names[i]] = posargs[i] - end - end - return args -end - -return mapargs diff --git a/indra/newview/scripts/lua/require/LLChatListener.lua b/indra/newview/scripts/lua/require/LLChatListener.lua new file mode 100644 index 0000000000..b4e90d272c --- /dev/null +++ b/indra/newview/scripts/lua/require/LLChatListener.lua @@ -0,0 +1,45 @@ +local fiber = require 'fiber' +local inspect = require 'inspect' +local leap = require 'leap' + +local LLChatListener = {} +local waitfor = {} +local listener_name = {} + +function LLChatListener:new() + local obj = setmetatable({}, self) + self.__index = self + obj.name = 'Chat_listener' + + return obj +end + +function LLChatListener:handleMessages(event_data) + print(inspect(event_data)) + return true +end + +function LLChatListener:start() + waitfor = leap.WaitFor:new(-1, self.name) + function waitfor:filter(pump, data) + if pump == "LLNearbyChat" then + return data + end + end + + fiber.launch(self.name, function() + event = waitfor:wait() + while event and self:handleMessages(event) do + event = waitfor:wait() + end + end) + + listener_name = leap.request(leap.cmdpump(), {op='listen', source='LLNearbyChat', listener="ChatListener", tweak=true}).listener +end + +function LLChatListener:stop() + leap.send(leap.cmdpump(), {op='stoplistening', source='LLNearbyChat', listener=listener_name}) + waitfor:close() +end + +return LLChatListener diff --git a/indra/newview/scripts/lua/require/login.lua b/indra/newview/scripts/lua/require/login.lua new file mode 100644 index 0000000000..0d8591cace --- /dev/null +++ b/indra/newview/scripts/lua/require/login.lua @@ -0,0 +1,19 @@ +local UI = require 'UI' +local leap = require 'leap' + +local function login(username, password) + if username and password then + local userpath = '//username_combo/Combo Text Entry' + local passpath = '//password_edit' + -- first clear anything presently in those text fields + for _, path in pairs({userpath, passpath}) do + UI.click(path) + UI.keypress{keysym='Backsp', path=path} + end + UI.type{path=userpath, text=username} + UI.type{path=passpath, text=password} + end + leap.send('LLPanelLogin', {op='onClickConnect'}) +end + +return login diff --git a/indra/newview/scripts/lua/require/mapargs.lua b/indra/newview/scripts/lua/require/mapargs.lua new file mode 100644 index 0000000000..45f5a9c556 --- /dev/null +++ b/indra/newview/scripts/lua/require/mapargs.lua @@ -0,0 +1,73 @@ +-- Allow a calling function to be passed a mix of positional arguments with +-- keyword arguments. Reference them as fields of a table. +-- Don't use this for a function that can accept a single table argument. +-- mapargs() assumes that a single table argument means its caller was called +-- with f{table constructor} syntax, and maps that table to the specified names. +-- Usage: +-- function f(...) +-- local a = mapargs({'a1', 'a2', 'a3'}, ...) +-- ... a.a1 ... etc. +-- end +-- f(10, 20, 30) -- a.a1 == 10, a.a2 == 20, a.a3 == 30 +-- f{10, 20, 30} -- a.a1 == 10, a.a2 == 20, a.a3 == 30 +-- f{a3=300, a1=100} -- a.a1 == 100, a.a2 == nil, a.a3 == 300 +-- f{1, a3=3} -- a.a1 == 1, a.a2 == nil, a.a3 == 3 +-- f{a3=3, 1} -- a.a1 == 1, a.a2 == nil, a.a3 == 3 +local function mapargs(names, ...) + local args = table.pack(...) + local posargs = {} + local keyargs = {} + -- For a mixed table, no Lua operation will reliably tell you how many + -- array items it contains, if there are any holes. Track that by hand. + -- We must be able to handle f(1, nil, 3) calls. + local maxpos = 0 + + -- For convenience, allow passing 'names' as a string 'n0,n1,...' + if type(names) == 'string' then + names = string.split(names, ',') + end + + if not (args.n == 1 and type(args[1]) == 'table') then + -- If caller passes more than one argument, or if the first argument + -- is not a table, then it's classic positional function-call syntax: + -- f(first, second, etc.). In that case we need not bother teasing + -- apart positional from keyword arguments. + posargs = args + maxpos = args.n + else + -- Single table argument implies f{mixed} syntax. + -- Tease apart positional arguments from keyword arguments. + for k, v in pairs(args[1]) do + if type(k) == 'number' then + posargs[k] = v + maxpos = math.max(maxpos, k) + else + if table.find(names, k) == nil then + error('unknown keyword argument ' .. tostring(k)) + end + keyargs[k] = v + end + end + end + + -- keyargs already has keyword arguments in place, just fill in positionals + args = keyargs + -- Don't exceed the number of parameter names. Loop explicitly over every + -- index value instead of using ipairs() so we can support holes (nils) in + -- posargs. + for i = 1, math.min(#names, maxpos) do + if posargs[i] ~= nil then + -- As in Python, make it illegal to pass an argument both positionally + -- and by keyword. This implementation permits func(17, first=nil), a + -- corner case about which I don't particularly care. + if args[names[i]] ~= nil then + error(string.format('parameter %s passed both positionally and by keyword', + tostring(names[i]))) + end + args[names[i]] = posargs[i] + end + end + return args +end + +return mapargs -- cgit v1.2.3