From bd011a94979f4f4858404e1b33707e2fa0452a31 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Fri, 7 Jul 2023 02:35:34 +0100 Subject: [PATCH] the common interface sits between higher and base classes --- lib/voicemeeter/iremote.rb | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/voicemeeter/iremote.rb diff --git a/lib/voicemeeter/iremote.rb b/lib/voicemeeter/iremote.rb new file mode 100644 index 0000000..0cbf403 --- /dev/null +++ b/lib/voicemeeter/iremote.rb @@ -0,0 +1,37 @@ +require_relative "errors" + +module Voicemeeter + class IRemote + " + Common interface between base class and higher classes. + " + def initialize(remote, i = nil) + @remote = remote + @index = i + end + + def to_s + "#{self.class.name.split("::").last}#{@index}#{@remote.kind}" + end + + def getter(param, is_string = false) + @remote.get(_cmd(param), is_string) + end + + def setter(param, value) + @remote.set(_cmd(param), value) + end + + def _cmd(param) + param.empty? ? "#{self.identifier}" : "#{self.identifier}.#{param}" + end + + def identifier + raise "Called abstract method: identifier" + end + + def apply(params) + params.each { |key, val| self.send(key, val) } + end + end +end