Sha256: 55062fb40a3bf94fff6b03c9c5d817fa01f5418c361f0d17f157f64e923854c5

Contents?: true

Size: 1.51 KB

Versions: 25

Compression:

Stored size: 1.51 KB

Contents

# frozen_string_literal: true

module PlatformosCheck
  module StringHelpers
    extend self

    # 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.
    def demodulize(path)
      path = path.to_s
      if (i = path.rindex("::"))
        path[(i + 2)..-1]
      else
        path
      end
    end

    # 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"
    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
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
platformos-check-0.4.14 lib/platformos_check/string_helpers.rb
platformos-check-0.4.13 lib/platformos_check/string_helpers.rb
platformos-check-0.4.12 lib/platformos_check/string_helpers.rb
platformos-check-0.4.11 lib/platformos_check/string_helpers.rb
platformos-check-0.4.10 lib/platformos_check/string_helpers.rb
platformos-check-0.4.9 lib/platformos_check/string_helpers.rb
platformos-check-0.4.8 lib/platformos_check/string_helpers.rb
platformos-check-0.4.7 lib/platformos_check/string_helpers.rb
platformos-check-0.4.6 lib/platformos_check/string_helpers.rb
platformos-check-0.4.5 lib/platformos_check/string_helpers.rb
platformos-check-0.4.4 lib/platformos_check/string_helpers.rb
platformos-check-0.4.3 lib/platformos_check/string_helpers.rb
platformos-check-0.4.2 lib/platformos_check/string_helpers.rb
platformos-check-0.4.1 lib/platformos_check/string_helpers.rb
platformos-check-0.4.0 lib/platformos_check/string_helpers.rb
platformos-check-0.3.3 lib/platformos_check/string_helpers.rb
platformos-check-0.3.1 lib/platformos_check/string_helpers.rb
platformos-check-0.3.0 lib/platformos_check/string_helpers.rb
platformos-check-0.2.2 lib/platformos_check/string_helpers.rb
platformos-check-0.2.1 lib/platformos_check/string_helpers.rb