Sha256: 1dcec183276651f233596bfa12ec96509bc6832ac0de5b50ed7b6f1a036747bd
Contents?: true
Size: 1.59 KB
Versions: 1
Compression:
Stored size: 1.59 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 include Vedeu::Model attr_accessor :name # Return a new instance of Group. # # @param attributes [Hash] # @option attributes members [Array] A collection of names of interfaces # belonging to this group. # @option attributes name [String] The name of the group. # @option attributes repository [Vedeu::Repository] The storage for all # Group models. # @return [Group] def initialize(attributes = {}) @attributes = defaults.merge!(attributes) @members = Array(@attributes[:members]) @name = @attributes[:name] @repository = @attributes[:repository] end # Add a member to the group by name. # # @param member [String] # @return [Group] def add(member) Group.new({ name: name, members: 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: name, members: members.delete(member) }).store end # Remove all members from the group. # # @return [Group] def reset Group.new(defaults.merge!({ name: name })).store end private def defaults { members: [], name: '', repository: Vedeu.groups, } end end # Group end # Vedeu
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
vedeu-0.4.4 | lib/vedeu/models/group.rb |