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