Sha256: d062cb5c28d01b5b1f4813dd20efffed242aca440974714e32111340c1971847

Contents?: true

Size: 732 Bytes

Versions: 1

Compression:

Stored size: 732 Bytes

Contents

# frozen_string_literal: true

require 'fast_underscore/version'
require 'fast_underscore/fast_underscore'

if defined?(ActiveSupport)
  String.prepend(Module.new do
    def underscore
      return self unless /[A-Z-]|::/.match?(self)

      response = dup
      acronyms = ActiveSupport::Inflector.inflections.acronym_regex

      response.gsub!(/(?:(?<=([A-Za-z\d]))|\b)(#{acronyms})(?=\b|[^a-z])/) do
        "#{$1 && '_'}#{$2.downcase}"
      end

      FastUnderscore.underscore(response)
    end
  end)

  class << ActiveSupport::Inflector
    define_method(:underscore, &FastUnderscore.method(:underscore))
  end
else
  String.prepend(Module.new do
    def underscore
      FastUnderscore.underscore(self)
    end
  end)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fast_underscore-0.0.3 lib/fast_underscore.rb