Module: Flexor::CaseConversion
- Defined in:
- lib/flexor/case_conversion.rb
Overview
Pure-function utilities for converting between camelCase and snake_case. Used by the FlexKeys plugin to compute alternate key forms.
Constant Summary collapse
- CAMEL_BOUNDARY =
/(?<=[A-Z])(?=[A-Z][a-z])|(?<=[a-z\d])(?=[A-Z])/- UNDERSCORE_SEGMENT =
%r{(?:_|(/))([a-z\d]*)}
Class Method Summary collapse
Class Method Details
.camelize(term) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/flexor/case_conversion.rb', line 11 def camelize(term) string = term.to_s.dup return string if string.empty? string.gsub!(UNDERSCORE_SEGMENT) do "#{Regexp.last_match(1) && "::"}#{Regexp.last_match(2).capitalize}" end return string if string.empty? string[0] = string[0].downcase string end |
.case_counterpart(key) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/flexor/case_conversion.rb', line 34 def case_counterpart(key) str = key.to_s if str.include?("_") camelize(str).to_sym elsif str.match?(/[A-Z]/) underscore(str).to_sym end end |
.underscore(camel_cased_word) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/flexor/case_conversion.rb', line 24 def underscore(camel_cased_word) return camel_cased_word.to_s.dup unless /[A-Z-]/.match?(camel_cased_word) word = camel_cased_word.to_s.dup word.gsub!(CAMEL_BOUNDARY, "_") word.tr!("-", "_") word.downcase! word end |