diff --git a/lib/voicemeeter/core_extensions/string/snakecase.rb b/lib/voicemeeter/core_extensions/string/snakecase.rb new file mode 100644 index 0000000..3b86c32 --- /dev/null +++ b/lib/voicemeeter/core_extensions/string/snakecase.rb @@ -0,0 +1,19 @@ +module Voicemeeter + module Ext + module String + module SnakeCase + class ::String + def snakecase + self + .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') + .gsub(/([a-z\d])([A-Z])/, '\1_\2') + .tr("-", "_") + .gsub(/\s/, "_") + .gsub(/__+/, "_") + .downcase + end + end + end + end + end +end