Sha256: d1d1733e64e9769047552eb69cbe2d6cd5b6b1bc4a30e3a6a4c66d832b99f71e

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

module Vedeu

  module Output

    module CompressorCache

      extend self

      # @param key [NilClass|Symbol]
      # @return [Array<void>]
      def read(key)
        storage.fetch(key, [])
      end

      # @return [Hash<Symbol => Array<void>>]
      def reset!
        @storage = in_memory
      end
      alias_method :reset, :reset!

      # @return [Hash<Symbol => Array<void>>]
      def storage
        @storage ||= in_memory
      end

      # @param key [NilClass|Symbol]
      # @param value [Array|NilClass]
      # @return [Hash<Symbol => Array<void>>]
      def write(key, value)
        return storage if invalid_key?(key) || invalid_value?(value)

        storage.merge!(key => value)
      end

      private

      # @return [Hash<Symbol => Array<void>>]
      def in_memory
        {
          compressed: '',
          original:   [],
        }
      end

      # @param key [NilClass|Symbol]
      # @return [Boolean]
      def invalid_key?(key)
        key.nil? || !in_memory.keys.include?(key)
      end

      # @param value [Array|NilClass]
      # @return [Boolean]
      def invalid_value?(value)
        value.nil? || value.empty?
      end

    end # CompressorCache

  end # Output

end # Vedeu

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vedeu-0.6.68 lib/vedeu/output/compressor_cache.rb