module ModulePlus::CoreExt::String

Public Class Methods

acronym_regex() click to toggle source
# File lib/module_plus/core_ext/string.rb, line 27
def self.acronym_regex
  /(?=a)b/
end
acronyms_underscore_regex() click to toggle source
# File lib/module_plus/core_ext/string.rb, line 24
def self.acronyms_underscore_regex
  /(?:(?<=([A-Za-z\d]))|\b)(#{acronym_regex})(?=\b|[^a-z])/
end
underscore(origin) click to toggle source

Camel case string to under score string

double column(“::”) to slash(“/”) dash(“-”) to underscore(“_”) reference ActiveSupport (MIT License) github.com/rails/rails/blob/master/activesupport/lib/active_support/inflector/methods.rb#L92

# File lib/module_plus/core_ext/string.rb, line 13
def self.underscore(origin)
  return origin unless /[A-Z-]|::/.match?(origin)
  word = origin.to_s.gsub('::', '/')
  word.gsub!(acronyms_underscore_regex) { "#{$1 && '_'.freeze }#{$2.downcase}" }
  word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2'.freeze)
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2'.freeze)
  word.tr!("-".freeze, "_".freeze)
  word.downcase!
  word
end