Sha256: 678017f35738df0a324c346cc3cbc368358d4acad9d32445b1c5c1538f126928

Contents?: true

Size: 725 Bytes

Versions: 1

Compression:

Stored size: 725 Bytes

Contents

module Ohm

  # Represents a key in Redis.
  class Key
    attr :parts
    attr :glue
    attr :namespace

    def self.[](*parts)
      Key.new(parts)
    end

    def initialize(parts, glue = ":", namespace = [])
      @parts = parts
      @glue = glue
      @namespace = namespace
    end

    def append(*parts)
      @parts += parts
      self
    end

    def eql?(other)
      to_s == other.to_s
    end

    alias == eql?

    def to_s
      (namespace + [@parts.join(glue)]).join(":")
    end

    alias inspect to_s
    alias to_str to_s

    def volatile
      @namespace = [:~]
      self
    end

    def group(glue = self.glue)
      Key.new([self], glue, namespace.slice!(0, namespace.size))
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ohm-0.0.33 lib/ohm/key.rb