class Gitosis::Group

Public Class Methods

new(&block) click to toggle source
# File lib/gitosis_easy_conf/groups.rb, line 22
def initialize(&block)
  @groups = {}
  instance_eval(&block)
end

Public Instance Methods

[](name) click to toggle source
# File lib/gitosis_easy_conf/groups.rb, line 46
def [](name)
  send(name)
end
denormalize() click to toggle source
# File lib/gitosis_easy_conf/groups.rb, line 36
def denormalize
  @groups.keys.each do |key|
    @groups[key] = @groups[key].collect do |member|
      @_refs = []
      denormalize_member(member)
    end.flatten
  end
  self
end
method_missing(method, *args, &block) click to toggle source
# File lib/gitosis_easy_conf/groups.rb, line 27
def method_missing(method, *args, &block)
  if args.length > 0
    @groups[method.to_sym] = args
  else
    raise UnknownGroup, "Unkown group '#{method}'" unless @groups[method]
    @groups[method].uniq.join(" ")
  end
end

Private Instance Methods

denormalize_member(member) click to toggle source
# File lib/gitosis_easy_conf/groups.rb, line 52
def denormalize_member(member)
  case member
  when String then member
  when Symbol
    if @_refs.include?(member)
      raise SelfReferencingGroup, "Group '#{member}' cycle reference"
    end
    @_refs << member

    raise UnknownGroup, "Unkown group '#{member}'" unless @groups[member]

    @groups[member].collect { |a| denormalize_member(a) }
  else
    raise UnknownGroupType, "Group '#{member}' type not supported: #{member.class}"
  end
end