From 48b9e931c4e86d101440cf0101ff23243b0f6fc7 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Sun, 9 Jul 2023 23:48:46 +0100 Subject: [PATCH] extend base String class to add a snakecase method --- .../core_extensions/string/snakecase.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 lib/voicemeeter/core_extensions/string/snakecase.rb 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