Class: Kobako::Registry::ServiceGroup
- Inherits:
-
Object
- Object
- Kobako::Registry::ServiceGroup
- Defined in:
- lib/kobako/registry/service_group.rb
Overview
A named namespace of Service Members for one Sandbox (SPEC.md B-07..B-11).
Instance Attribute Summary collapse
-
#members ⇒ Object
readonly
Returns the value of attribute members.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
-
#[](member) ⇒ Object
Member lookup.
-
#bind(member, object) ⇒ Object
Bind
objectundermemberinside this group. -
#fetch(member) ⇒ Object
Strict variant of #[]; raises
KeyErrorwhen no member is registered undermember. -
#initialize(name) ⇒ ServiceGroup
constructor
Build a new ServiceGroup.
-
#to_preamble ⇒ Object
Structured description for the guest preamble (Frame 1).
Constructor Details
#initialize(name) ⇒ ServiceGroup
Build a new ServiceGroup. name is an already-validated Group name (must satisfy NAME_PATTERN; validation is the caller’s responsibility).
11 12 13 14 |
# File 'lib/kobako/registry/service_group.rb', line 11 def initialize(name) @name = name @members = {} end |
Instance Attribute Details
#members ⇒ Object (readonly)
Returns the value of attribute members.
7 8 9 |
# File 'lib/kobako/registry/service_group.rb', line 7 def members @members end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
7 8 9 |
# File 'lib/kobako/registry/service_group.rb', line 7 def name @name end |
Instance Method Details
#[](member) ⇒ Object
Member lookup. Returns the bound object or nil when missing.
31 32 33 |
# File 'lib/kobako/registry/service_group.rb', line 31 def [](member) @members[member.to_s] end |
#bind(member, object) ⇒ Object
Bind object under member inside this group. member is a constant-form name as a Symbol or String. object is any Ruby object that responds to the methods guest code will invoke. Returns self for chaining. Raises ArgumentError when member does not match the constant pattern, or a member of the same name is already bound (SPEC.md B-11).
22 23 24 25 26 27 28 |
# File 'lib/kobako/registry/service_group.rb', line 22 def bind(member, object) member_str = validate_member_name!(member) raise ArgumentError, "Member #{@name}::#{member_str} is already bound" if @members.key?(member_str) @members[member_str] = object self end |
#fetch(member) ⇒ Object
Strict variant of #[]; raises KeyError when no member is registered under member.
37 38 39 40 41 42 43 44 |
# File 'lib/kobako/registry/service_group.rb', line 37 def fetch(member) member_str = member.to_s unless @members.key?(member_str) raise KeyError, "no member named #{member_str.inspect} in group #{@name.inspect}" end @members[member_str] end |
#to_preamble ⇒ Object
Structured description for the guest preamble (Frame 1). Returns a two-element array [name, member_keys] suitable for msgpack encoding.
48 49 50 |
# File 'lib/kobako/registry/service_group.rb', line 48 def to_preamble [@name, @members.keys] end |