Module: ModulePlus::CoreExt::String
- Defined in:
- lib/module_plus/core_ext/string.rb
Class Method Summary collapse
- .acronym_regex ⇒ Object
- .acronyms_underscore_regex ⇒ Object
-
.underscore(origin) ⇒ Object
Camel case string to under score string.
Class Method Details
.acronym_regex ⇒ Object
28 29 30 |
# File 'lib/module_plus/core_ext/string.rb', line 28 def self.acronym_regex /(?=a)b/ end |
.acronyms_underscore_regex ⇒ Object
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 |