Module: ModulePlus::CoreExt::String

Defined in:
lib/module_plus/core_ext/string.rb

Class Method Summary collapse

Class Method Details

.acronym_regexObject



28
29
30
# File 'lib/module_plus/core_ext/string.rb', line 28

def self.acronym_regex
  /(?=a)b/
end

.acronyms_underscore_regexObject



25
26
27
# File 'lib/module_plus/core_ext/string.rb', line 25

def self.acronyms_underscore_regex
  /(?:(?<=([A-Za-z\d]))|\b)(#{acronym_regex})(?=\b|[^a-z])/
end

.underscore(origin) ⇒ Object

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



14
15
16
17
18
19
20
21
22
23
# File 'lib/module_plus/core_ext/string.rb', line 14

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