Sha256: 4169fd5254da551108d52e02d91e66c8f03123d6fc88a6b432663b030779e23d

Contents?: true

Size: 946 Bytes

Versions: 15

Compression:

Stored size: 946 Bytes

Contents

#!/usr/bin/env ruby

require 'set'
require 'redis'

module Flapjack
  module Data

    class Tag < ::Set

      attr_accessor :name

      def initialize(opts)
        @name  = opts[:name]
        @redis = opts[:redis]
        preset = @redis.smembers(@name)
        enum = opts[:create] || []
        @redis.sadd(@name, enum) unless enum.empty?
        super(enum | preset)
      end

      def self.find(name, opts)
        self.new(:name => name,
                 :redis => opts[:redis])
      end

      def self.create(name, enum = [], opts)
        self.new(:name => name,
                 :create => enum,
                 :redis => opts[:redis])
      end

      def add(o)
        @redis.sadd(@name, o) unless o.empty?
        super(o)
      end

      def delete(o)
        @redis.srem(@name, o)
        super(o)
      end

      def merge(o)
        @redis.sadd(@name, o) unless o.empty?
        super(o)
      end

    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
flapjack-0.6.61 lib/flapjack/data/tag.rb
flapjack-0.6.60 lib/flapjack/data/tag.rb
flapjack-0.6.59 lib/flapjack/data/tag.rb
flapjack-0.6.58 lib/flapjack/data/tag.rb
flapjack-0.6.57 lib/flapjack/data/tag.rb
flapjack-0.6.56 lib/flapjack/data/tag.rb
flapjack-0.6.55 lib/flapjack/data/tag.rb
flapjack-0.6.54 lib/flapjack/data/tag.rb
flapjack-0.6.53 lib/flapjack/data/tag.rb
flapjack-0.6.52 lib/flapjack/data/tag.rb
flapjack-0.6.51 lib/flapjack/data/tag.rb
flapjack-0.6.50 lib/flapjack/data/tag.rb
flapjack-0.6.49 lib/flapjack/data/tag.rb
flapjack-0.6.48 lib/flapjack/data/tag.rb
flapjack-0.6.47 lib/flapjack/data/tag.rb