summaryrefslogtreecommitdiff
path: root/lua/astal/binding.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/astal/binding.lua')
-rw-r--r--lua/astal/binding.lua65
1 files changed, 0 insertions, 65 deletions
diff --git a/lua/astal/binding.lua b/lua/astal/binding.lua
deleted file mode 100644
index 50509d1..0000000
--- a/lua/astal/binding.lua
+++ /dev/null
@@ -1,65 +0,0 @@
-local lgi = require("lgi")
-local GObject = lgi.require("GObject", "2.0")
-
----@class Binding
----@field emitter table|Variable
----@field property? string
----@field transformFn function
-local Binding = {}
-
----@param emitter table
----@param property? string
----@return Binding
-function Binding.new(emitter, property)
- return setmetatable({
- emitter = emitter,
- property = property,
- transformFn = function(v)
- return v
- end,
- }, Binding)
-end
-
-function Binding:__tostring()
- local str = "Binding<" .. tostring(self.emitter)
- if self.property ~= nil then
- str = str .. ", " .. self.property
- end
- return str .. ">"
-end
-
-function Binding:get()
- if type(self.emitter.get) == "function" then
- return self.transformFn(self.emitter:get())
- end
- return self.transformFn(self.emitter[self.property])
-end
-
----@param transform fun(value: any): any
----@return Binding
-function Binding:as(transform)
- local b = Binding.new(self.emitter, self.property)
- b.transformFn = function(v)
- return transform(self.transformFn(v))
- end
- return b
-end
-
----@param callback fun(value: any)
----@return function
-function Binding:subscribe(callback)
- if type(self.emitter.subscribe) == "function" then
- return self.emitter:subscribe(function()
- callback(self:get())
- end)
- end
- local id = self.emitter.on_notify:connect(function()
- callback(self:get())
- end, self.property, false)
- return function()
- GObject.signal_handler_disconnect(self.emitter, id)
- end
-end
-
-Binding.__index = Binding
-return Binding