From f13501f1d815936e8307b0b5dcd086a31e3b3ea4 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Tue, 29 Aug 2023 22:56:40 +0100 Subject: [PATCH] now using String refinement --- lib/voicemeeter/cbindings.rb | 10 +++++----- lib/voicemeeter/util.rb | 28 ++++++++++++++-------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/voicemeeter/cbindings.rb b/lib/voicemeeter/cbindings.rb index 0737de3..3f9c2ff 100644 --- a/lib/voicemeeter/cbindings.rb +++ b/lib/voicemeeter/cbindings.rb @@ -1,10 +1,11 @@ module Voicemeeter # Ruby bindings for the C-API functions module CBindings - private - extend Logging extend FFI::Library + using Util::CoreExtensions + + private VM_PATH = Install.get_vmpath @@ -14,7 +15,7 @@ module Voicemeeter ffi_convention :stdcall private_class_method def self.attach_function(c_name, args, returns) - ruby_name = :"bind_#{Util::String.snakecase(c_name.to_s.delete_prefix("VBVMR_"))}" + ruby_name = :"bind_#{c_name.to_s.delete_prefix("VBVMR_").snakecase}" super(ruby_name, c_name, args, returns) end @@ -52,8 +53,7 @@ module Voicemeeter def call(fn, *args, ok: [0], exp: nil) to_cname = -> { - "VBVMR_#{Util::String.camelcase(fn.to_s.delete_prefix("bind_")) - .gsub(/(Button|Input|Output)/, '\1_')}" + "VBVMR_#{fn.to_s.delete_prefix("bind_").camelcase.gsub(/(Button|Input|Output)/, '\1_')}" } res = send(fn, *args) diff --git a/lib/voicemeeter/util.rb b/lib/voicemeeter/util.rb index e52c49b..af54ff0 100644 --- a/lib/voicemeeter/util.rb +++ b/lib/voicemeeter/util.rb @@ -1,21 +1,21 @@ module Voicemeeter module Util - module String - def snakecase(s) - s.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') - .gsub(/([a-z\d])([A-Z])/, '\1_\2') - .tr("-", "_") - .gsub(/\s/, "_") - .gsub(/__+/, "_") - .downcase - end + module CoreExtensions + refine String do + def snakecase + gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') + .gsub(/([a-z\d])([A-Z])/, '\1_\2') + .tr("-", "_") + .gsub(/\s/, "_") + .gsub(/__+/, "_") + .downcase + end - def camelcase(s) - s if s !~ /_/ && s =~ /[A-Z]+.*/ - s.split("_").map { |e| e.capitalize }.join + def camelcase + self if self !~ /_/ && self =~ /[A-Z]+.*/ + split("_").map(&:capitalize).join + end end - - module_function :snakecase, :camelcase end module Cache