class GroupConfigurator
A simple utility class to parse nested groups
Attributes
all[R]
groups[R]
Public Class Methods
group(new_groups, &block)
click to toggle source
Creates a flat set of groups from a string or block
@examples
GroupConfigurator.group
(“ruby/rails”) => #<Set: {[ “ruby”, “ruby/rails” ]} > GroupConfigurator.group
(:ruby) do |config|
config.group :rails
end => #<Set: {[ “ruby”, “ruby/rails” ]} >
# File lib/slimer/group_configurator.rb, line 17 def self.group(new_groups, &block) new.group(new_groups, &block) end
Public Instance Methods
group(new_group) { |self| ... }
click to toggle source
Creates a flat set of groups from a string or block
@examples
GroupConfigurator.group
(“ruby/rails”) => #<Set: {[ “ruby”, “ruby/rails” ]} > GroupConfigurator.group
(:ruby) do |config|
config.group :rails
end => #<Set: {[ “ruby”, “ruby/rails” ]} >
# File lib/slimer/group_configurator.rb, line 29 def group(new_group) @groups ||= Set.new return group(group_from_string(new_group)) if new_group.to_s.include?("/") group_with_level = [@level, new_group].compact.join("/") @groups << group_with_level return self unless block_given? @level = group_with_level yield(self) self end
Private Instance Methods
group_from_string(new_group)
click to toggle source
Extracts nested groups from a string and sets new level as parent group
e.g. group_from_string("ruby/rails")
# File lib/slimer/group_configurator.rb, line 47 def group_from_string(new_group) new_groups = new_group.split("/") @groups << new_groups[0] @level = new_groups.shift new_groups end