class Guard::Internals::Groups
def add(name, options = {})
def add(name, options = {}) all(name).first || Group.new(name, options).tap do |group| fail if name == :specs && options.empty? @groups << group end end
def all(filter = nil)
def all(filter = nil) return @groups if filter.nil? matcher = matcher_for(filter) @groups.select { |group| matcher.call(group) } end
def initialize
def initialize @groups = DEFAULT_GROUPS.map { |name| Group.new(name) } end
def matcher_for(filter)
def matcher_for(filter) case filter when String, Symbol ->(group) { group.name == filter.to_sym } when Regexp ->(group) { group.name.to_s =~ filter } else fail "Invalid filter: #{filter.inspect}" end end