Sha256: e6e40b3c3f9c89d4695444e3b3c55d367292c907f57a6412ef46349153672339

Contents?: true

Size: 1010 Bytes

Versions: 1

Compression:

Stored size: 1010 Bytes

Contents

# frozen_string_literal: true

require 'set'

module SidekiqSimpleDelay
  # utility methods
  class Utils
    class << self
      SYSTEM_SIMPLE_CLASSES = Set.new(
        [
          NilClass,
          TrueClass,
          FalseClass,
          String,
          Symbol
        ]
      ).freeze

      SYSTEM_SIMPLE_COMPLEX_CLASSES = Set.new(
        [
          Hash,
          Array
        ]
      ).freeze

      SYSTEM_SIMPLE_NUMERIC_CLASSES =
        if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.0')
          Set.new([Integer, Float]).freeze
        else
          Set.new([Fixnum, Bignum, Float]).freeze
        end

      def simple_object?(obj)
        klass = obj.class

        if SYSTEM_SIMPLE_COMPLEX_CLASSES.include?(klass)
          obj.all? { |o| simple_object?(o) }
        elsif SYSTEM_SIMPLE_CLASSES.include?(klass)
          true
        elsif SYSTEM_SIMPLE_NUMERIC_CLASSES.include?(klass)
          true
        else
          false
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sidekiq_simple_delay-0.1.0 lib/sidekiq_simple_delay/utils.rb