From 5489883e0199632b8aa269ae268739c96c4b272e Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 4 Nov 2024 02:15:18 -0300 Subject: core: smol lua fixes --- lang/lua/astal/binding.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'lang/lua/astal/binding.lua') diff --git a/lang/lua/astal/binding.lua b/lang/lua/astal/binding.lua index 2944ec4..610f3a6 100644 --- a/lang/lua/astal/binding.lua +++ b/lang/lua/astal/binding.lua @@ -7,7 +7,7 @@ local GObject = lgi.require("GObject", "2.0") ---@field transform_fn function local Binding = {} ----@param emitter table +---@param emitter table | userdata ---@param property? string ---@return Binding function Binding.new(emitter, property) @@ -28,11 +28,11 @@ function Binding:__tostring() return str .. ">" end +---@return any function Binding:get() if self.property ~= nil and GObject.Object:is_type_of(self.emitter) then return self.transform_fn(self.emitter[self.property]) - end - if type(self.emitter.get) == "function" then + elseif type(self.emitter.get) == "function" then return self.transform_fn(self.emitter:get()) end error("can not get: Not a GObject or a Variable " + self) @@ -58,8 +58,7 @@ function Binding:subscribe(callback) return function() GObject.signal_handler_disconnect(self.emitter, id) end - end - if type(self.emitter.subscribe) == "function" then + elseif type(self.emitter.subscribe) == "function" then return self.emitter:subscribe(function() callback(self:get()) end) -- cgit v1.2.3 From b697dd8e1d936d6a789c73fbacfc65698d2dab39 Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 4 Nov 2024 02:17:00 -0300 Subject: core: smol lua fixes --- lang/lua/astal/binding.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lang/lua/astal/binding.lua') diff --git a/lang/lua/astal/binding.lua b/lang/lua/astal/binding.lua index 610f3a6..81d2177 100644 --- a/lang/lua/astal/binding.lua +++ b/lang/lua/astal/binding.lua @@ -34,8 +34,9 @@ function Binding:get() return self.transform_fn(self.emitter[self.property]) elseif type(self.emitter.get) == "function" then return self.transform_fn(self.emitter:get()) + else + error("can not get: Not a GObject or a Variable " + self) end - error("can not get: Not a GObject or a Variable " + self) end ---@param transform fun(value: any): any @@ -62,8 +63,9 @@ function Binding:subscribe(callback) return self.emitter:subscribe(function() callback(self:get()) end) + else + error("can not subscribe: Not a GObject or a Variable " + self) end - error("can not subscribe: Not a GObject or a Variable " + self) end Binding.__index = Binding -- cgit v1.2.3 From f02e58342c61b4ae312344be2805aa019d65541d Mon Sep 17 00:00:00 2001 From: Kevin Date: Tue, 5 Nov 2024 15:53:23 -0300 Subject: core: typing for lua --- lang/lua/astal/binding.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lang/lua/astal/binding.lua') diff --git a/lang/lua/astal/binding.lua b/lang/lua/astal/binding.lua index 81d2177..9708ef8 100644 --- a/lang/lua/astal/binding.lua +++ b/lang/lua/astal/binding.lua @@ -5,7 +5,9 @@ local GObject = lgi.require("GObject", "2.0") ---@field emitter table|Variable ---@field property? string ---@field transform_fn function +---@overload fun(emitter: table | userdata, property?: string): Binding local Binding = {} +Binding.__index = Binding ---@param emitter table | userdata ---@param property? string @@ -68,5 +70,8 @@ function Binding:subscribe(callback) end end -Binding.__index = Binding -return Binding +return setmetatable(Binding, { + __call = function(_, emitter, prop) + return Binding.new(emitter, prop) + end, +}) -- cgit v1.2.3 From b1da91dcced3803c764d22d4da1a49c23d7e97ed Mon Sep 17 00:00:00 2001 From: Kevin Date: Tue, 5 Nov 2024 16:13:49 -0300 Subject: oops --- lang/lua/astal/binding.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lang/lua/astal/binding.lua') diff --git a/lang/lua/astal/binding.lua b/lang/lua/astal/binding.lua index 9708ef8..dd2df7f 100644 --- a/lang/lua/astal/binding.lua +++ b/lang/lua/astal/binding.lua @@ -2,14 +2,14 @@ local lgi = require("lgi") local GObject = lgi.require("GObject", "2.0") ---@class Binding ----@field emitter table|Variable +---@field emitter table | Variable | userdata ---@field property? string ---@field transform_fn function ---@overload fun(emitter: table | userdata, property?: string): Binding local Binding = {} Binding.__index = Binding ----@param emitter table | userdata +---@param emitter table | Variable | userdata ---@param property? string ---@return Binding function Binding.new(emitter, property) -- cgit v1.2.3