Class: Vedeu::Groups::Group
- Inherits:
-
Object
- Object
- Vedeu::Groups::Group
- Includes:
- Repositories::Model, Toggleable
- Defined in:
- lib/vedeu/groups/group.rb,
lib/vedeu/groups/repository.rb
Overview
Groups
Instance Attribute Summary collapse
Attributes included from Toggleable
Attributes included from Repositories::Model
Instance Method Summary collapse
-
#add(member) ⇒ Vedeu::Groups::Group
Add a member to the group by name.
-
#attributes ⇒ Hash<Symbol => void>
Returns the attributes of the group.
-
#by_zindex ⇒ Array<String>
Return the members of the group sorted by the zindex of the members.
-
#defaults ⇒ Hash<Symbol => void>
private
The default options/attributes for a new instance of this class.
-
#deputy(client = nil) ⇒ Vedeu::Groups::DSL
Returns a DSL instance responsible for defining the DSL methods of this model.
-
#eql?(other) ⇒ Boolean
(also: #==)
An object is equal when its values are the same.
-
#hide ⇒ Vedeu::Groups::Group
Hide the named group of interfaces, or without a name, the group of the currently focussed interface.
-
#initialize(attributes = {}) ⇒ Vedeu::Groups::Group
constructor
Return a new instance of Vedeu::Groups::Group.
-
#interfaces ⇒ Array<Vedeu::Interfaces::Interface]
private
Return the interfaces for all members of the group.
-
#members ⇒ Set
Return the members of the group.
-
#remove(member) ⇒ Vedeu::Groups::Group
Remove a member from the group by name.
-
#reset! ⇒ Vedeu::Groups::Group
(also: #reset)
Remove all members from the group.
-
#show ⇒ Vedeu::Groups::Group
Show the named group of interfaces, or without a name, the group of the currently focussed interface.
Methods included from Toggleable
Methods included from Repositories::Model
Methods included from Common
#absent?, #array?, #boolean, #boolean?, #empty_value?, #escape?, #falsy?, #hash?, #line_model?, #numeric?, #positionable?, #present?, #snake_case, #stream_model?, #string?, #symbol?, #truthy?, #view_model?
Constructor Details
#initialize(attributes = {}) ⇒ Vedeu::Groups::Group
A group being visible or not may not necessarily mean the members are of the same state.
Return a new instance of Vedeu::Groups::Group.
36 37 38 39 40 |
# File 'lib/vedeu/groups/group.rb', line 36 def initialize(attributes = {}) defaults.merge!(attributes).each do |key, value| instance_variable_set("@#{key}", value) end end |
Instance Attribute Details
#name ⇒ String
17 18 19 |
# File 'lib/vedeu/groups/group.rb', line 17 def name @name end |
Instance Method Details
#add(member) ⇒ Vedeu::Groups::Group
Add a member to the group by name.
46 47 48 49 50 |
# File 'lib/vedeu/groups/group.rb', line 46 def add(member) attrs = attributes.merge!(members: members.add(member)) Vedeu::Groups::Group.store(attrs) end |
#attributes ⇒ Hash<Symbol => void>
Returns the attributes of the group.
55 56 57 58 59 60 61 62 |
# File 'lib/vedeu/groups/group.rb', line 55 def attributes { name: name, members: members, repository: repository, visible: visible, } end |
#by_zindex ⇒ Array<String>
Return the members of the group sorted by the zindex of the members.
68 69 70 |
# File 'lib/vedeu/groups/group.rb', line 68 def by_zindex interfaces.sort_by(&:zindex).map(&:name) end |
#defaults ⇒ Hash<Symbol => void> (private)
The default options/attributes for a new instance of this class.
162 163 164 165 166 167 168 169 |
# File 'lib/vedeu/groups/group.rb', line 162 def defaults { members: Set.new, name: '', repository: Vedeu.groups, visible: true, } end |
#deputy(client = nil) ⇒ Vedeu::Groups::DSL
Returns a DSL instance responsible for defining the DSL methods of this model.
80 81 82 |
# File 'lib/vedeu/groups/group.rb', line 80 def deputy(client = nil) Vedeu::Groups::DSL.new(self, client) end |
#eql?(other) ⇒ Boolean Also known as: ==
An object is equal when its values are the same.
88 89 90 91 |
# File 'lib/vedeu/groups/group.rb', line 88 def eql?(other) self.class.equal?(other.class) && name == other.name && members == other.members end |
#hide ⇒ Vedeu::Groups::Group
The action of showing a group will effectively clear the terminal and show the new group, therefore hiding the group may not be necessary.
Hide the named group of interfaces, or without a name, the group of the currently focussed interface. Useful for hiding part of that which is currently displaying in the terminal.
108 109 110 111 112 113 114 |
# File 'lib/vedeu/groups/group.rb', line 108 def hide super @members.each { |member| Vedeu.trigger(:_hide_interface_, member) } self end |
#interfaces ⇒ Array<Vedeu::Interfaces::Interface] (private)
Return the interfaces for all members of the group.
174 175 176 |
# File 'lib/vedeu/groups/group.rb', line 174 def interfaces members.map { |name| Vedeu.interfaces.by_name(name) } end |
#members ⇒ Set
Return the members of the group.
119 120 121 |
# File 'lib/vedeu/groups/group.rb', line 119 def members @_members ||= Set.new(@members) end |
#remove(member) ⇒ Vedeu::Groups::Group
Remove a member from the group by name.
127 128 129 130 131 |
# File 'lib/vedeu/groups/group.rb', line 127 def remove(member) attrs = attributes.merge!(members: members.delete(member)) Vedeu::Groups::Group.store(attrs) end |
#reset! ⇒ Vedeu::Groups::Group Also known as: reset
Remove all members from the group.
136 137 138 139 140 |
# File 'lib/vedeu/groups/group.rb', line 136 def reset! attrs = defaults.merge!(name: name) Vedeu::Groups::Group.store(attrs) end |
#show ⇒ Vedeu::Groups::Group
Show the named group of interfaces, or without a name, the group of the currently focussed interface.
151 152 153 154 155 156 157 |
# File 'lib/vedeu/groups/group.rb', line 151 def show super @members.each { |member| Vedeu.trigger(:_show_interface_, member) } self end |