Module: PlatformosCheck::StringHelpers
- Extended by:
- StringHelpers
- Included in:
- StringHelpers
- Defined in:
- lib/platformos_check/string_helpers.rb
Instance Method Summary collapse
-
#demodulize(path) ⇒ Object
Removes the module part from the expression in the string.
-
#underscore(camel_cased_word) ⇒ Object
Makes an underscored, lowercase form from the expression in the string.
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/platformos_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 46 |
# File 'lib/platformos_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 |