Sha256: 155ff579b51700fbd7f5fe647015387ff4e2c50c6533d2dc3448b64b8dfcdce7

Contents?: true

Size: 1.12 KB

Versions: 5

Compression:

Stored size: 1.12 KB

Contents

module Vedeu

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

    include Vedeu::Model

    attr_reader :name

    # Return a new instance of Group.
    #
    # @param name [String] The name of the group.
    # @param members [Array]
    # @return [Group]
    def initialize(name, members = [])
      @name       = name
      @members    = Array(members)
      @repository = Vedeu.groups
    end

    # Add a member to the group by name.
    #
    # @param member [String]
    # @return [Group]
    def add(member)
      Group.new(name, members.add(member)).store
    end

    # Return the members as a Set.
    #
    # @return [Set]
    def members
      @members.to_set
    end

    # Remove a member from the group by name.
    #
    # @param member [String]
    # @return [Group]
    def remove(member)
      Group.new(name, members.delete(member)).store
    end

    # Remove all members from the group.
    #
    # @return [Group]
    def reset
      Group.new(name).store
    end

    private

  end # Group

end # Vedeu

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
vedeu-0.3.4 lib/vedeu/models/group.rb
vedeu-0.3.3 lib/vedeu/models/group.rb
vedeu-0.3.2 lib/vedeu/models/group.rb
vedeu-0.3.1 lib/vedeu/models/group.rb
vedeu-0.3.0 lib/vedeu/models/group.rb