Sha256: 121ac735e20f34849ed12ab40682a2a4844a16283db6460f539e83beb66291ac

Contents?: true

Size: 1.76 KB

Versions: 9

Compression:

Stored size: 1.76 KB

Contents

require "nori"
require "date"
require "american_date"

module AllscriptsUnityClient
  class Utilities
    DATETIME_REGEX = /^((\d{1,2}[-\/]\d{1,2}[-\/]\d{4})|(\d{4}[-\/]\d{1,2}[-\/]\d{1,2})|(\d{1,2}-[A-Za-z]{3,4}-\d{4})|([A-Za-z]{3,4} +\d{1,2} \d{2,4}))(T| +)(\d{1,2}:\d{2}(:\d{2})?(\.\d+)? ?(PM|AM|pm|am)?((-|\+)\d{2}:?\d{2})?Z?)$/
    DATE_REGEX = /^((\d{1,2}[-\/]\d{1,2}[-\/]\d{4})|(\d{4}[-\/]\d{1,2}[-\/]\d{1,2})|(\d{1,2}-[A-Za-z]{3,4}-\d{4})|([A-Za-z]{3,4} +\d{1,2} \d{2,4}))$/

    def self.try_to_encode_as_date(possible_date)
      if possible_date.nil?
        return nil
      end

      if possible_date.is_a?(String) && possible_date =~ DATE_REGEX
        return Date.parse(possible_date)
      end

      if possible_date.is_a?(String) && possible_date =~ DATETIME_REGEX
        return DateTime.parse(possible_date)
      end

      possible_date
    end

    def self.encode_data(data)
      if data.nil?
        return nil
      end

      if data.respond_to?(:pack)
        return data.pack("m")
      else
        return [data].pack("m")
      end
    end

    def self.recursively_symbolize_keys(hash)
      # Base case: nil maps to nil
      if hash.nil?
        return nil
      end

      # Recurse case: value is a hash so symbolize keys
      if hash.is_a?(Hash)
        result = hash.map do |key, value|
          { key.snakecase.to_sym => recursively_symbolize_keys(value) }
        end

        return result.reduce(:merge)
      end

      # Recurse case: value is an array so symbolize keys for any hash
      # in it
      if hash.is_a?(Array)
        result = hash.map do |value|
          recursively_symbolize_keys(value)
        end

        return result
      end

      # Base case: value was not an array or a hash, so just
      # return it
      hash
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
allscripts_unity_client-1.3.4 lib/allscripts_unity_client/utilities.rb
allscripts_unity_client-1.3.3 lib/allscripts_unity_client/utilities.rb
allscripts_unity_client-1.3.2 lib/allscripts_unity_client/utilities.rb
allscripts_unity_client-1.3.1 lib/allscripts_unity_client/utilities.rb
allscripts_unity_client-1.3.0 lib/allscripts_unity_client/utilities.rb
allscripts_unity_client-1.2.7 lib/allscripts_unity_client/utilities.rb
allscripts_unity_client-1.2.6 lib/allscripts_unity_client/utilities.rb
allscripts_unity_client-1.2.5 lib/allscripts_unity_client/utilities.rb
allscripts_unity_client-1.2.4 lib/allscripts_unity_client/utilities.rb