Sha256: 81d6be0652111b3461f327d5187cb4ba7bd173ba398500ab37f947798b887979
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
module Redisrank class Label include Database include Options def default_options { :hashed_label => false } end def self.create(name, opts = {}) self.new(name, opts).save end def self.join(*args) args = args.map {|i| i.to_s} self.new(args.reject {|i| i.blank? }.join(Redisrank.group_separator)) end def initialize(str, opts = {}) parse_options(opts) @raw = str.to_s end def to_s @raw end def name @options[:hashed_label] ? hash : self.to_s end def hash @hash ||= Digest::SHA1.hexdigest(self.to_s) end def save @saved = db.hset(KEY_LABELS, hash, self.to_s) if @options[:hashed_label] self end def saved? return true unless @options[:hashed_label] @saved ||= false end def parent @parent ||= groups[1] if groups.size > 1 end def me self.to_s.split(Redisrank.group_separator).last end def groups return @groups unless @groups.nil? @groups = [] parent = "" self.to_s.split(Redisrank.group_separator).each do |part| if !part.blank? group = ((parent.blank?) ? "" : "#{parent}#{Redisrank.group_separator}") + part @groups << Label.new(group) parent = group end end @groups.reverse! end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
redisrank-0.1.0 | lib/redisrank/label.rb |