Sha256: be572843431bf29eaf5739d3fe02c630ed21549a68c12f476934c0019ff06b4b

Contents?: true

Size: 579 Bytes

Versions: 1

Compression:

Stored size: 579 Bytes

Contents

module Jimmy
  module TransformKeys
    def camel_upper(str)
      camel_lower(str).sub(/\A(.)/) { $1.upcase }
    end

    def camel_lower(str)
      str.gsub(/[-_\s]+(.)/) { $1.upcase }
    end

    class Transformer
      include TransformKeys

      def cache(method)
        (@cache ||= {})[method] ||= {}
      end

      def transform(sym, method)
        if method
          cache(method)[sym] ||= __send__(method, sym.to_s).to_sym
        else
          sym
        end
      end
    end

    def self.transformer
      @transformer ||= Transformer.new
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jimmy-0.5.0 lib/jimmy/transform_keys.rb