Sha256: a3ca570431644a9cde1955f45158c37dbe2be8168f31222aeb8e5f7adced6702

Contents?: true

Size: 1.36 KB

Versions: 4

Compression:

Stored size: 1.36 KB

Contents

require Arachni::Options.instance.dir['lib'] + 'anemone/storage/exceptions'

module Anemone
  module Storage
    class Base

      def initialize(adapter)
        @adap = adapter

        # verify adapter conforms to this class's methods
        methods.each do |method|
          if !@adap.respond_to?(method.to_sym)
            raise "Storage adapter must support method #{method}"
          end
        end
      end

      def [](key)
        @adap[key]
        rescue
          puts key
          raise RetrievalError, $!
      end

      def []=(key, value)
        @adap[key] = value
        rescue
          raise InsertionError, $!
      end

      def delete(key)
        @adap.delete(key)
        rescue
          raise DeletionError, $!
      end

      def each
        @adap.each { |k, v| yield k, v }
        rescue
          raise GenericError, $!
      end

      def merge!(hash)
        @adap.merge!(hash)
        rescue
          raise GenericError, $!
      end

      def close
        @adap.close
        rescue
          raise CloseError, $!
      end

      def size
        @adap.size
        rescue
          raise GenericError, $!
      end

      def keys
        @adap.keys
        rescue
          raise GenericError, $!
      end

      def has_key?(key)
        @adap.has_key?(key)
        rescue
          raise GenericError, $!
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
arachni-0.2.4 lib/anemone/storage/base.rb
arachni-0.2.3 lib/anemone/storage/base.rb
arachni-0.2.2.2 lib/anemone/storage/base.rb
arachni-0.2.2.1 lib/anemone/storage/base.rb