summaryrefslogtreecommitdiff
path: root/config/mpv/scripts/subs2srs/utils/switch.lua
diff options
context:
space:
mode:
authornavewindre <boneyaard@gmail.com>2025-04-05 03:00:29 +0200
committernavewindre <boneyaard@gmail.com>2025-04-05 03:00:29 +0200
commitd6c4365b8de32b621ac46074a9b69908b95686c0 (patch)
tree495cb5b1aa7e68ab6ec07fa5fb09904a8c7e47e7 /config/mpv/scripts/subs2srs/utils/switch.lua
parentb24463f3d045783b8f4e72926054d53b908e150f (diff)
a
Diffstat (limited to 'config/mpv/scripts/subs2srs/utils/switch.lua')
-rw-r--r--config/mpv/scripts/subs2srs/utils/switch.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/config/mpv/scripts/subs2srs/utils/switch.lua b/config/mpv/scripts/subs2srs/utils/switch.lua
new file mode 100644
index 0000000..5dac1c6
--- /dev/null
+++ b/config/mpv/scripts/subs2srs/utils/switch.lua
@@ -0,0 +1,38 @@
+--[[
+Copyright: Ren Tatsumoto and contributors
+License: GNU GPL, version 3 or later; http://www.gnu.org/licenses/gpl.html
+
+Switch cycles between values in a table.
+]]
+
+local make_switch = function(states)
+ local self = {
+ states = states,
+ current_state = 1
+ }
+ local bump = function()
+ self.current_state = self.current_state + 1
+ if self.current_state > #self.states then
+ self.current_state = 1
+ end
+ end
+ local get = function()
+ return self.states[self.current_state]
+ end
+ local set = function(new_state)
+ for idx, value in ipairs(self.states) do
+ if value == new_state then
+ self.current_state = idx
+ end
+ end
+ end
+ return {
+ bump = bump,
+ get = get,
+ set = set,
+ }
+end
+
+return {
+ new = make_switch
+}