Class: KnowItAll::StringHelper
- Inherits:
-
Object
- Object
- KnowItAll::StringHelper
- Defined in:
- lib/know_it_all/string_helper.rb
Constant Summary collapse
- EMPTY_STRING =
''.freeze
- UNDERSCORE_DIVISION_TARGET =
'\1_\2'.freeze
- NAMESPACE_SEPARATOR =
'::'.freeze
- CLASSIFY_SEPARATOR =
'_'.freeze
- UNDERSCORE_SEPARATOR =
'/'.freeze
- DASHERIZE_SEPARATOR =
'-'.freeze
- CLASSIFY_WORD_SEPARATOR =
/#{CLASSIFY_SEPARATOR}|#{NAMESPACE_SEPARATOR}|#{UNDERSCORE_SEPARATOR}|#{DASHERIZE_SEPARATOR}/
Class Method Summary collapse
Class Method Details
.classify(string) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/know_it_all/string_helper.rb', line 15 def self.classify(string) string = string.to_s words = underscore(string).split(CLASSIFY_WORD_SEPARATOR).map!(&:capitalize) delimiters = string.scan(CLASSIFY_WORD_SEPARATOR) delimiters.map! do |delimiter| delimiter == CLASSIFY_SEPARATOR ? EMPTY_STRING : NAMESPACE_SEPARATOR end words.zip(delimiters).join end |
.underscore(string) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/know_it_all/string_helper.rb', line 28 def self.underscore(string) new_string = string.gsub(NAMESPACE_SEPARATOR, UNDERSCORE_SEPARATOR) new_string.gsub!(/([A-Z\d]+)([A-Z][a-z])/, UNDERSCORE_DIVISION_TARGET) new_string.gsub!(/([a-z\d])([A-Z])/, UNDERSCORE_DIVISION_TARGET) new_string.gsub!(/[[:space:]]|\-/, UNDERSCORE_DIVISION_TARGET) new_string.downcase end |