voicemeeter-rb/lib/voicemeeter/util.rb

36 lines
809 B
Ruby
Raw Normal View History

module Voicemeeter
module Util
module String
def snakecase(string)
string.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(string)
string if string !~ /_/ && string =~ /[A-Z]+.*/
string.split("_").map { |e| e.capitalize }.join
end
module_function :snakecase, :camelcase
end
module Cache
def polling(func, **kwargs)
params = {
get: kwargs[:name],
get_buttonstatus: "mb_#{kwargs[:id]}_#{kwargs[:mode]}"
}
return cache.delete(params[func]) if cache.key? params[func]
clear_dirty if @sync
yield
end
end
end
end