registeredModes[$mode->getFormatCode()] = $mode; if ($mode->isDefault()) { $this->defaultMode = $mode; } return $this; } /** * Removes registered modes */ public function unregister(string $formatCode): ModeRegistry { if (isset($this->registeredModes[$formatCode])) { unset($this->registeredModes[$formatCode]); } return $this; } public function isRegistered(string $formatCode): bool { return isset($this->registeredModes[$formatCode]); } /** * @throws InvalidModeException */ public function getByFormatCode(string $formatCode): Mode { foreach ($this->registeredModes as $mode) { if ($mode->getFormatCode() === $formatCode) { return $mode; } } throw new InvalidModeException('Tried to get unregistered code editor mode by format code "' . $formatCode . '"', 1499710203); } /** * @throws InvalidModeException */ public function getByFileExtension(string $fileExtension): Mode { foreach ($this->registeredModes as $mode) { if (in_array($fileExtension, $mode->getBoundFileExtensions(), true)) { return $mode; } } throw new InvalidModeException('Cannot find a registered mode for requested file extension "' . $fileExtension . '"', 1500306488); } public function getDefaultMode(): Mode { return $this->defaultMode; } }