Sha256: 15b140bf1d56dd5568dd071b91e7268ddf78d4088b222cbc5512748a21e34abe

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 KB

Contents

# encoding: utf-8
#
module Mode
  module Sdk
    # Provides simple utility methods for use with the Mode public data
    # warehouse
    #
    module WarehouseUtil
      # Normalize and truncate a string for use as a Mode warehouse table or
      # column name
      #
      # @param name [String] the original name
      #
      # @return [String] the normalized name
      #
      def normalize_name(name)
        normalize_string(name)[0..63]
      end

      protected

      def normalize_string(name)
        name
          .downcase              # no uppercase characters
          .strip                 # no leading or trailing whitespace
          .gsub(/\s+/, ' ')      # no multiple consecutive spaces
          .gsub(/-/, '_')        # no hyphens
          .gsub(/[^\w\s_]/, '')  # no unexpected characters
          .gsub(/\s/, '_')       # no spaces
          .gsub(/_+/, '_')       # no multiple consecutive underscores
          .gsub(/(^_)|(_$)/, '') # no leading or trailing underscores
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mode-sdk-0.1.0 lib/mode/sdk/warehouse_util.rb
mode-sdk-0.0.1 lib/mode/sdk/warehouse_util.rb