Di::KeyParser
Shared key parsing utilities for Registry and Scope. Handles Crystal namespaced types (e.g. "NS::C:name") correctly.
Key format:
- "Type" → default concrete registration
- "Type:name" → named concrete registration
- "~Type:Impl" → interface binding (unnamed)
- "~Type:Impl:name" → interface binding (named)
The "~" prefix ensures interface bindings don't leak into concrete resolution.
Constants
INTERFACE_PREFIX = "~"
Marker prefix for interface binding keys.
Instance methods
Build interface lookup prefix for scanning.
Build a registry key from segments joined by ':'. key(type: "Type") → "Type" key(type: "Type", name: "primary") → "Type:primary" key(type: "Type", impl: "Impl") → "~Type:Impl" key(type: "Type", impl: "Impl", name: "primary") → "~Type:Impl:primary"
Parse a registry key into (type_name, service_name) tuple. Finds the first single ':' that isn't part of '::' namespace separator. Strips interface marker from type_name if present.