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 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.



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

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

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

Instance Attribute Details

#nameObject

Returns the value of attribute name.



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

def name
  @name
end

Instance Method Details

#add(member) ⇒ Group

Add a member to the group by name.

Parameters:

  • member (String)

Returns:



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

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

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

#defaultsHash (private)

Returns:

  • (Hash)


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

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

#membersSet

Return the members as a Set.

Returns:

  • (Set)


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

def members
  @members.to_set
end

#remove(member) ⇒ Group

Remove a member from the group by name.

Parameters:

  • member (String)

Returns:



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

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

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

#resetGroup

Remove all members from the group.

Returns:



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

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