module Tree::Utils::CamelCaseMethodHandler
Provides utility functions to handle CamelCase methods, and redirect invocation of such methods to the snake_case equivalents.
Public Class Methods
included(base)
click to toggle source
# File lib/tree/utils/camel_case_method_handler.rb, line 45 def self.included(base) # @!visibility private # Allow the deprecated CamelCase method names. Display a warning. # :nodoc: def method_missing(meth, *args, &blk) if self.respond_to?(new_method_name = to_snake_case(meth)) warn DeprecatedMethodWarning, "The camelCased methods are deprecated. " "Please use #{new_method_name} instead of #{meth}" return send(new_method_name, *args, &blk) else super end end private # @!visibility private # Convert a CamelCasedWord to a underscore separated camel_cased_word. # # @param [String] camel_cased_word The word to be converted to snake_case. # @return [String] the snake_cased_word. def to_snake_case(camel_cased_word) word = camel_cased_word.to_s.dup word.gsub!(/::/, '/') word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2') word.gsub!(/([a-z\d])([A-Z])/,'\1_\2') word.tr!("-", "_") word.downcase! word end end