Class: Commendo::RedisBacked::TagSet
- Inherits:
-
Object
- Object
- Commendo::RedisBacked::TagSet
- Defined in:
- lib/commendo/redis-backed/tag_set.rb
Instance Attribute Summary collapse
-
#key_base ⇒ Object
Returns the value of attribute key_base.
-
#redis ⇒ Object
Returns the value of attribute redis.
Instance Method Summary collapse
- #add(resource, *tags) ⇒ Object
- #delete(resource, *tags) ⇒ Object
- #empty? ⇒ Boolean
- #get(resource) ⇒ Object
-
#initialize(key_base) ⇒ TagSet
constructor
A new instance of TagSet.
- #matches(resource, include, exclude = []) ⇒ Object
- #set(resource, *tags) ⇒ Object
Constructor Details
Instance Attribute Details
#key_base ⇒ Object
Returns the value of attribute key_base.
5 6 7 |
# File 'lib/commendo/redis-backed/tag_set.rb', line 5 def key_base @key_base end |
#redis ⇒ Object
Returns the value of attribute redis.
5 6 7 |
# File 'lib/commendo/redis-backed/tag_set.rb', line 5 def redis @redis end |
Instance Method Details
#add(resource, *tags) ⇒ Object
21 22 23 |
# File 'lib/commendo/redis-backed/tag_set.rb', line 21 def add(resource, *) redis.sadd(resource_key(resource), ) unless .empty? end |
#delete(resource, *tags) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/commendo/redis-backed/tag_set.rb', line 37 def delete(resource, *) if .empty? redis.del(resource_key(resource)) else redis.srem(resource_key(resource), ) end end |
#empty? ⇒ Boolean
12 13 14 15 |
# File 'lib/commendo/redis-backed/tag_set.rb', line 12 def empty? cursor, keys = redis.scan(0, match: "#{key_base}:*", count: 1) cursor.to_i == 0 && keys.empty? end |
#get(resource) ⇒ Object
17 18 19 |
# File 'lib/commendo/redis-backed/tag_set.rb', line 17 def get(resource) redis.smembers(resource_key(resource)).sort end |
#matches(resource, include, exclude = []) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/commendo/redis-backed/tag_set.rb', line 30 def matches(resource, include, exclude = []) = get(resource) can_include = include.nil? || include.empty? || ( & include).length > 0 should_exclude = !exclude.nil? && !exclude.empty? && ( & exclude).length > 0 return can_include && !should_exclude end |
#set(resource, *tags) ⇒ Object
25 26 27 28 |
# File 'lib/commendo/redis-backed/tag_set.rb', line 25 def set(resource, *) delete(resource) add(resource, *) end |