Sha256: 3eb408e8d9e217cb5b2f326b71a3b1d70debe179123eba0b8f7e433083a4c0c6

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 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.
  #
  class Group

    attr_reader :name

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

    # Add a member to the group by name.
    #
    # @param member [String]
    # @return [Group]
    def add(member)
      new_members = @members.add(member)

      Group.new(name, *new_members)
    end

    # Returns the members as a collection.
    #
    # @return [Array]
    def members
      @members.to_a
    end

    # Remove a member from the group by name.
    #
    # @param member [String]
    # @return [Group]
    def remove(member)
      new_members = @members.delete(member)

      Group.new(name, *new_members)
    end

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

  end # Group

end # Vedeu

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vedeu-0.2.12 lib/vedeu/repositories/models/group.rb