From 15904e8a946c03cecaf0751ffac618a45172edca Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Fri, 4 Mar 2011 16:25:31 +0000 Subject: [PATCH] added grouping support to Redistat::Label --- lib/redistat/label.rb | 18 ++++++++++++++++-- spec/label_spec.rb | 13 +++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/lib/redistat/label.rb b/lib/redistat/label.rb index 5ecf865..e059eab 100644 --- a/lib/redistat/label.rb +++ b/lib/redistat/label.rb @@ -5,6 +5,10 @@ module Redistat attr_reader :raw attr_reader :connection_ref + def self.create(name, options = {}) + self.new(name, options).save + end + def initialize(str, options = {}) @options = options @raw = str.to_s @@ -31,8 +35,18 @@ module Redistat @saved ||= false end - def self.create(name, options = {}) - self.new(name, options).save + def groups + return @groups if @groups + @groups = [] + parent = "" + @raw.split(GROUP_SEPARATOR).each do |part| + if !part.blank? + group = ((parent.blank?) ? "" : "#{parent}/") + part + @groups << group + parent = group + end + end + @groups.reverse! end end diff --git a/spec/label_spec.rb b/spec/label_spec.rb index abe277c..f5d56bf 100644 --- a/spec/label_spec.rb +++ b/spec/label_spec.rb @@ -25,4 +25,17 @@ describe Redistat::Label do db.get("#{Redistat::KEY_LEBELS}#{label.hash}").should == name end + it "should separate label names into groups" do + name = "message/public/offensive" + label = Redistat::Label.new(name) + label.name.should == name + label.groups.should == [ "message/public/offensive", + "message/public", + "message" ] + name = "message" + label = Redistat::Label.new(name) + label.name.should == name + label.groups.should == [ "message" ] + end + end \ No newline at end of file