types = array_reverse($types); } /** * Get all valid content file extensions. * * @return string[] */ public function getContentExtensions() { $extensions = []; foreach ($this->types as $type) { $extensions = array_merge($extensions, $type->getExtensions()); } return array_unique($extensions); } /** * Get the ContentType able to handle this node. * * @return ContentType */ public function getType(Content $node) { $path = $node->getPath() ?: $node->getName(); $extension = pathinfo($path, PATHINFO_EXTENSION); foreach ($this->types as $type) { if (in_array($extension, $type->getExtensions())) { return $type; } } throw new \RuntimeException("no contentType found for $path"); } }