Sha256: 701c086ba06cb92f524c20979fe82e16bdc141b1c4ddd47f4cae0b7529ed8815

Contents?: true

Size: 497 Bytes

Versions: 6

Compression:

Stored size: 497 Bytes

Contents

# encoding: utf-8
# frozen_string_literal: false
module Propane
  # This class defines a single method that converts a method name
  # from camel or mixed case to snake case.
  #
  class Underscorer
    # Underscorer.("CamelCase") => "camel_case"
    #
    def self.call(input)
      string = input.to_s
      string.gsub(/::/, '/')
            .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
            .gsub(/([a-z\d])([A-Z])/, '\1_\2')
            .tr('-', '_')
            .downcase
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
propane-0.8.0-java lib/propane/underscorer.rb
propane-0.7.0-java lib/propane/underscorer.rb
propane-0.6.0-java lib/propane/underscorer.rb
propane-0.5.0-java lib/propane/underscorer.rb
propane-0.4.0.pre-java lib/propane/underscorer.rb
propane-0.3.0.pre-java lib/propane/underscorer.rb