lib/redistat/key.rb in redistat-0.3.0 vs lib/redistat/key.rb in redistat-0.4.0

- old
+ new

@@ -1,84 +1,84 @@ module Redistat class Key include Database include Options - + def default_options { :depth => :hour } end - + def initialize(scope, label_name = nil, time_stamp = nil, opts = {}) parse_options(opts) self.scope = scope self.label = label_name if !label_name.nil? self.date = time_stamp ||= Time.now end - + def prefix key = "#{@scope}" key << "/#{label.name}" if !label.nil? key << ":" key end - + def date=(input) @date = (input.instance_of?(Redistat::Date)) ? input : Date.new(input) # Redistat::Date, not ::Date end attr_reader :date - + def depth options[:depth] end - + # def scope # @scope.to_s # end - + def scope=(input) @scope = (input.instance_of?(Redistat::Scope)) ? input : Scope.new(input) end attr_reader :scope - + def label=(input) @label = (input.instance_of?(Redistat::Label)) ? input : Label.create(input, @options) end attr_reader :label - + def label_hash @label.hash end - + def parent @parent ||= self.class.new(self.scope, @label.parent, self.date, @options) unless @label.parent.nil? end - + def children members = db.smembers("#{scope}#{LABEL_INDEX}#{@label}") || [] # older versions of Redis returns nil members.map { |member| child_label = [@label, member].reject { |i| i.nil? } self.class.new(self.scope, child_label.join(GROUP_SEPARATOR), self.date, @options) } end - + def update_index @label.groups.each do |label| parent = (label.parent || "") db.sadd("#{scope}#{LABEL_INDEX}#{parent}", label.me) end end - + def groups @groups ||= @label.groups.map do |label| self.class.new(@scope, label, self.date, @options) end end - + def to_s(depth = nil) depth ||= @options[:depth] key = self.prefix key << @date.to_s(depth) key end - + end -end \ No newline at end of file +end