Sha256: 890efc45e1160dc741dd1a886e7138740a014f7c647b09e48e951a32c4bd3604

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

# frozen_string_literal: true

class ActiveOrm::Redis::Base
  class << self

    @@evaluate = false

    def client(new_client = nil)
      new_client || ActiveOrm::Redis.configuration.client
    end

    def evaluate(value = true)
      @@evaluate = value
      self
    end

    private

    def evaluate?
      value = @@evaluate
      @@evaluate = false
      value
    end

    def append?(order)
      order.to_s == 'append'
    end

    # rubocop:disable Lint/RescueException, Security/Eval
    def metaform(value)
      value.nil? ? value : eval(value)
    rescue Exception
      value
    end
    # rubocop:enable Lint/RescueException, Security/Eval

    def metaform_array(datum)
      datum.map { |val| metaform(val) }
    end

    def metaform_hash(datum)
      datum.each { |key, val| datum[key] = metaform(val) }
    end

    def metamorph_array(datum)
      datum = metaform(datum)

      case datum.first.class.name
      when 'Array' then datum.map { |arr| metaform_array(arr) }
      when 'Hash' then datum.map { |hsh| metaform_hash(hsh) }
      else metaform_array(datum)
      end
    end

    def metamorph(datum)
      datum = metaform(datum)

      case datum.class.name
      when 'Array' then metamorph_array(datum)
      when 'Hash' then metaform_hash(datum)
      else metaform(datum)
      end
    end

    def metatransform(datum)
      return if datum.empty?
      evaluate? ? metamorph(datum) : datum
    end

    def milliseconds?(format)
      format.to_s == 'milliseconds'
    end

    def normalize_key(key)
      key.to_s
    end

    def prepend?(order)
      order.to_s == 'prepend'
    end

    def seconds?(format)
      format.to_s == 'seconds'
    end

    def stringify_keys(value)
      value.map { |key, _| key.to_s }
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_orm-5.0.3 lib/active_orm/redis/base.rb