Module: ThemeCheck::StringHelpers

Extended by:
StringHelpers
Included in:
StringHelpers
Defined in:
lib/theme_check/string_helpers.rb

Instance Method Summary collapse

Instance Method Details

#demodulize(path) ⇒ Object

Removes the module part from the expression in the string. Ported from ActiveSupport

demodulize('ActiveSupport::Inflector::Inflections') # => "Inflections"
demodulize('Inflections')                           # => "Inflections"
demodulize('::Inflections')                         # => "Inflections"
demodulize('')                                      # => ""

See also #deconstantize.



16
17
18
19
20
21
22
23
# File 'lib/theme_check/string_helpers.rb', line 16

def demodulize(path)
  path = path.to_s
  if (i = path.rindex("::"))
    path[(i + 2)..-1]
  else
    path
  end
end

#underscore(camel_cased_word) ⇒ Object

Makes an underscored, lowercase form from the expression in the string. Base on ActiveSupport’s

Changes ‘::’ to ‘/’ to convert namespaces to paths.

underscore('ActiveModel')         # => "active_model"
underscore('ActiveModel::Errors') # => "active_model/errors"

As a rule of thumb you can think of underscore as the inverse of #camelize, though there are cases where that does not hold:

camelize(underscore('SSLError'))  # => "SslError"


37
38
39
40
41
42
43
44
45
# File 'lib/theme_check/string_helpers.rb', line 37

def underscore(camel_cased_word)
  return camel_cased_word unless /[A-Z-]|::/.match?(camel_cased_word)
  word = camel_cased_word.to_s.gsub("::", "/")
  word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
  word.tr!("-", "_")
  word.downcase!
  word
end