source/team.rb
1# Rules about who may join and edit a kata.
2module Team
3 # True for a name that is short, plain and not yet taken.
4 def self.name?(name, taken)
name.size < 9 && name.match?(/\A[a-z]+\z/) && !taken.include?(name)
&&0111
├─ name.size < 9FTTT
├─ name.match?(/\A[a-z]+\z/)TTF
└─ !taken.include?(name)TF
7 end
8
9 # True for a member who may edit: an owner, or an editor
10 # whose invite is still open.
11 def self.can_edit?(member)
member.owner || (member.editor && member.invite_open)
||0011
├─ member.ownerFFTF
└─ &&TFF
├─ member.editorTFT
└─ member.invite_openTF
13 end
14
15 # True when an active owner leads the team, or it is empty.
16 def self.led?(members)
members.any? { |m| m.owner && m.active } || members.empty?
||00000011
├─ any?FFFTFFFT
│ ├─ members011***01
│ └─ m.owner && m.activeFFTFFT
└─ members.empty?FTFTFT
&&001
├─ m.ownerTFT
└─ m.activeFT
18 end
19end