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

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<Symbol => Boolean|Set|String| Vedeu::Groups::Repository]) (defaults to: {})

    ttributes [Hash<Symbol => Boolean|Set|String| Vedeu::Groups::Repository]

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.



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

#nameString

Returns:

  • (String)


17
18
19
# File 'lib/vedeu/groups/group.rb', line 17

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.

Instance Method Details

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

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

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

Parameters:

  • variable (String|Symbol|Array|Fixnum)

    The variable to check.

Returns:

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

Add a member to the group by name.

Parameters:

  • member (String)

Returns:



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

#attributesHash<Symbol => void>

Returns the attributes of the group.

Returns:

  • (Hash<Symbol => void>)


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

#become(klass, attributes) ⇒ Class Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Converts one class into another.

Parameters:

  • klass (Class)

    The class to become an instance of.

  • attributes (Hash)

    The attributes of klass.

Returns:

  • (Class)

    Returns a new instance of klass.

#boolean(value) ⇒ Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating the value was a boolean.

Parameters:

  • value (void)

Returns:

#boolean?(value) ⇒ Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating whether the value is a Boolean.

Parameters:

Returns:

#by_zindexArray<String>

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

Returns:

  • (Array<String>)


68
69
70
# File 'lib/vedeu/groups/group.rb', line 68

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

#defaultsHash<Symbol => Boolean|Set|String| Vedeu::Groups::Repository] (private)

Returns the default options/attributes for this class.

Returns:



165
166
167
168
169
170
171
172
# File 'lib/vedeu/groups/group.rb', line 165

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.

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.

Returns:



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.

Parameters:

Returns:



88
89
90
91
# File 'lib/vedeu/groups/group.rb', line 88

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

#escape?(value) ⇒ Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating whether the value is an escape sequence object (e.g. Vedeu::Cells::Escape.)

Returns:

#falsy?(value) ⇒ Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating whether the value should be considered false.

Parameters:

  • value (void)

Returns:

#hash?(value) ⇒ Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating whether the value is a Hash.

Parameters:

  • value (Hash|void)

Returns:

#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:



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

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

Return the interfaces for all members of the group.

Returns:



177
178
179
# File 'lib/vedeu/groups/group.rb', line 177

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

#line_model?Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating the model is a Views::Line.

Returns:

#membersSet

Return the members of the group.

Returns:

  • (Set)


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

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

#numeric?(value) ⇒ Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating whether the value is a Fixnum.

Parameters:

  • value (Fixnum|void)

Returns:

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

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

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

Parameters:

  • variable (String|Symbol|Array|Fixnum)

    The variable to check.

Returns:

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

Remove a member from the group by name.

Parameters:

  • member (String)

Returns:



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

#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:



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

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

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

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"

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

Parameters:

  • klass (Module|Class|String)

Returns:

  • (String)

#store(&block) ⇒ void 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.

#stream_model?Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating the model is a Views::Stream.

Returns:

#string?(value) ⇒ Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating whether the value is a Fixnum.

Parameters:

  • value (String|void)

Returns:

#toggleBoolean 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:

#truthy?(value) ⇒ Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating whether the value should be considered true.

Parameters:

  • value (void)

Returns:

#view_model?Boolean Originally defined in module Common

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a boolean indicating the model is a Views::View.

Returns: