Class: Vedeu::Groups::Group

Inherits:
Object
  • Object
show all
Includes:
Repositories::Model, Toggleable
Defined in:
lib/vedeu/groups/group.rb,
lib/vedeu/groups/repository.rb

Overview

Groups

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Vedeu::Groups::Group

Note:

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.

Parameters:

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

Options Hash (attributes):

  • members (Set)

    A collection of names of interfaces belonging to this group.

  • name (String|Symbol)

    The name of the group.

  • repository (Object)
    Vedeu::Repositories::Repository

    The storage for all Group models.

  • visible (Boolean)

    Whether the group is visible or not.



39
40
41
42
43
# File 'lib/vedeu/groups/group.rb', line 39

def initialize(attributes = {})
  defaults.merge!(attributes).each do |key, value|
    instance_variable_set("@#{key}", value)
  end
end

Instance Attribute Details

#nameString

Returns:

  • (String)


15
16
17
# File 'lib/vedeu/groups/group.rb', line 15

def name
  @name
end

#repositoryVedeu::Repositories::Repository Originally defined in module Repositories::Model

#visibleBoolean Also known as: visible? Originally defined in module Toggleable

Returns Whether the toggleable is visible.

Returns:

  • (Boolean)

    Whether the toggleable is visible.

Class Method Details

.store(attributes = {}) ⇒ Vedeu::Groups::Group

Parameters:

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

Returns:



19
20
21
# File 'lib/vedeu/groups/group.rb', line 19

def self.store(attributes = {})
  new(attributes).store
end

Instance Method Details

#absent?(variable) ⇒ Boolean Originally defined in module Common

Returns a boolean indicating whether a variable is nil or empty.

Parameters:

  • variable (String|Symbol|Array|Fixnum)

    The variable to check.

Returns:

  • (Boolean)

#add(member) ⇒ Vedeu::Groups::Group

Add a member to the group by name.

Parameters:

  • member (String)

Returns:



49
50
51
52
53
# File 'lib/vedeu/groups/group.rb', line 49

def add(member)
  attrs = attributes.merge!(members: members.add(member))

  Vedeu::Groups::Group.store(attrs)
end

#attributesHash<Symbol => void>

Returns the attributes of the group.

Returns:

  • (Hash<Symbol => void>)


58
59
60
61
62
63
64
65
# File 'lib/vedeu/groups/group.rb', line 58

def attributes
  {
    name:       name,
    members:    members,
    repository: repository,
    visible:    visible,
  }
end

#by_zindexArray<String>

Return the members of the group sorted by the zindex of the members.

Returns:

  • (Array<String>)


71
72
73
# File 'lib/vedeu/groups/group.rb', line 71

def by_zindex
  interfaces.sort_by(&:zindex).map(&:name)
end

#defaultsHash (private)

Returns the default options/attributes for this class.

Returns:

  • (Hash)


154
155
156
157
158
159
160
161
# File 'lib/vedeu/groups/group.rb', line 154

def defaults
  {
    members:    Set.new,
    name:       '',
    repository: Vedeu.groups,
    visible:    true,
  }
end

#demodulize(klass) ⇒ String Originally defined in module Common

Removes the module part from the expression in the string.

Examples:

demodulize('Vedeu::SomeModule::SomeClass') # => "SomeClass"

Parameters:

  • klass (Class|String)

Returns:

  • (String)

#deputy(client = nil) ⇒ void Originally defined in module Repositories::Model

This method returns an undefined value.

Returns a DSL instance responsible for defining the DSL methods of this model.

Parameters:

  • client (Object|NilClass) (defaults to: nil)

    The client binding represents the client application object that is currently invoking a DSL method. It is required so that we can send messages to the client application object should we need to.

#dsl_classString (private) Originally defined in module Repositories::Model

Returns the DSL class name responsible for this model.

Returns:

  • (String)

#eql?(other) ⇒ Boolean Also known as: ==

An object is equal when its values are the same.

Parameters:

Returns:

  • (Boolean)


79
80
81
82
# File 'lib/vedeu/groups/group.rb', line 79

def eql?(other)
  self.class == other.class && name == other.name &&
    members == other.members
end

#hideVedeu::Groups::Group

Note:

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.

Examples:

Vedeu.trigger(:_hide_group_, name)
Vedeu.hide_group(name)

Returns:



99
100
101
102
103
104
105
# File 'lib/vedeu/groups/group.rb', line 99

def hide
  super

  @members.each { |member| Vedeu.trigger(:_hide_interface_, member) }

  self
end

#interfacesArray<Vedeu::Interfaces::Interface] (private)

Return the interfaces for all members of the group.

Returns:



166
167
168
# File 'lib/vedeu/groups/group.rb', line 166

def interfaces
  members.map { |name| Vedeu.interfaces.by_name(name) }
end

#membersSet

Return the members of the group.

Returns:

  • (Set)


110
111
112
# File 'lib/vedeu/groups/group.rb', line 110

def members
  @_members ||= Set.new(@members)
end

#present?(variable) ⇒ Boolean Originally defined in module Common

Returns a boolean indicating whether a variable has a useful value.

Parameters:

  • variable (String|Symbol|Array|Fixnum)

    The variable to check.

Returns:

  • (Boolean)

#remove(member) ⇒ Vedeu::Groups::Group

Remove a member from the group by name.

Parameters:

  • member (String)

Returns:



118
119
120
121
122
# File 'lib/vedeu/groups/group.rb', line 118

def remove(member)
  attrs = attributes.merge!(members: members.delete(member))

  Vedeu::Groups::Group.store(attrs)
end

#resetVedeu::Groups::Group

Remove all members from the group.



127
128
129
130
131
# File 'lib/vedeu/groups/group.rb', line 127

def reset
  attrs = defaults.merge!(name: name)

  Vedeu::Groups::Group.store(attrs)
end

#showVedeu::Groups::Group

Show the named group of interfaces, or without a name, the group of the currently focussed interface.

Examples:

Vedeu.trigger(:_show_group_, name)
Vedeu.show_group(name)

Returns:



141
142
143
144
145
146
147
# File 'lib/vedeu/groups/group.rb', line 141

def show
  super

  @members.each { |member| Vedeu.trigger(:_show_interface_, member) }

  self
end

#snake_case(name) ⇒ String Originally defined in module Common

Converts a class name to a lowercase snake case string.

Examples:

snake_case(MyClassName) # => "my_class_name"
snake_case(NameSpaced::ClassName)
# => "name_spaced/class_name"

Parameters:

  • name (String)

Returns:

  • (String)

#storevoid Originally defined in module Repositories::Model

TODO:

Perhaps some validation could be added here?

Note:

If a block is given, store the model, return the model after yielding.

This method returns an undefined value.

Returns The model instance stored in the repository.

#toggleFalseClass|TrueClass Originally defined in module Toggleable

Toggle the visible state and store the model. When the model is hidden, then it is shown, and vice versa.

Returns:

  • (FalseClass|TrueClass)