Sha256: d2f1786c6f570e0b92df6df0bdf4ea3a83ac4193669a83d46d2f7bb58bb049d6

Contents?: true

Size: 723 Bytes

Versions: 6

Compression:

Stored size: 723 Bytes

Contents

module ApiccoSDK
  module Helpers
    ACRONYM_REGEX             = /(?=a)b/
    ACRONYMS_UNDERSCORE_REGEX = /(?:(?<=([A-Za-z\d]))|\b)(#{ACRONYM_REGEX})(?=\b|[^a-z])/
    # see: https://github.com/rails/rails/blob/76ae3dbed301d7178c221b0c957c6b73464eec58/activesupport/lib/active_support/inflector/methods.rb#L92
    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!(ACRONYMS_UNDERSCORE_REGEX) { "#{$1 && '_' }#{$2.downcase}" }
      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

6 entries across 6 versions & 1 rubygems

Version Path
apicco-sdk-0.1.4 lib/apicco-sdk/helpers.rb
apicco-sdk-0.1.3 lib/apicco-sdk/helpers.rb
apicco-sdk-0.1.2 lib/apicco-sdk/helpers.rb
apicco-sdk-0.1.1 lib/apicco-sdk/helpers.rb
apicco-sdk-0.1.0 lib/apicco-sdk/helpers.rb
apicco-sdk-0.0.1 lib/apicco_sdk/helpers.rb