Class: Vedeu::Group

Inherits:
Object
  • Object
show all
Includes:
Model
Defined in:
lib/vedeu/models/group.rb

Overview

Interfaces can be associated with one another by being members of the same Group. A Group is a collection of interface names.

Instance Attribute Summary collapse

Attributes included from Model

#repository

Instance Method Summary collapse

Methods included from Model

#demodulize, #deputy, #dsl_class, included, #store

Constructor Details

#initialize(attributes = {}) ⇒ Group

Return a new instance of Vedeu::Group.

Parameters:

  • attributes (Hash) (defaults to: {})

Options Hash (attributes):

  • members (Array)

    A collection of names of interfaces belonging to this group.

  • name (String)

    The name of the group.

  • repository (Vedeu::Repository)

    The storage for all Group models.



22
23
24
25
26
27
28
# File 'lib/vedeu/models/group.rb', line 22

def initialize(attributes = {})
  @attributes = defaults.merge!(attributes)

  @members    = Array(@attributes[:members])
  @name       = @attributes[:name]
  @repository = @attributes[:repository]
end

Instance Attribute Details

#nameString

Returns:

  • (String)


11
12
13
# File 'lib/vedeu/models/group.rb', line 11

def name
  @name
end

Instance Method Details

#add(member) ⇒ Group

Add a member to the group by name.

Parameters:

  • member (String)

Returns:



34
35
36
37
38
# File 'lib/vedeu/models/group.rb', line 34

def add(member)
  @members = members.add(member)

  Vedeu::Group.new(name: name, members: @members).store
end

#defaultsHash (private)

Returns:

  • (Hash)


67
68
69
70
71
72
73
# File 'lib/vedeu/models/group.rb', line 67

def defaults
  {
    members:    [],
    name:       '',
    repository: Vedeu.groups,
  }
end

#membersSet

Return the members as a Set.

Returns:

  • (Set)


43
44
45
# File 'lib/vedeu/models/group.rb', line 43

def members
  @members.to_set
end

#remove(member) ⇒ Group

Remove a member from the group by name.

Parameters:

  • member (String)

Returns:



51
52
53
54
55
# File 'lib/vedeu/models/group.rb', line 51

def remove(member)
  @members = members.delete(member)

  Vedeu::Group.new(name: name, members: @members).store
end

#resetGroup

Remove all members from the group.

Returns:



60
61
62
# File 'lib/vedeu/models/group.rb', line 60

def reset
  Vedeu::Group.new(defaults.merge!(name: name)).store
end