Chris@0: Extension\Atom\Renderer\Feed::class, Chris@0: 'Content\Renderer\Entry' => Extension\Content\Renderer\Entry::class, Chris@0: 'DublinCore\Renderer\Entry' => Extension\DublinCore\Renderer\Entry::class, Chris@0: 'DublinCore\Renderer\Feed' => Extension\DublinCore\Renderer\Feed::class, Chris@16: 'GooglePlayPodcast\Entry' => Extension\GooglePlayPodcast\Entry::class, Chris@16: 'GooglePlayPodcast\Feed' => Extension\GooglePlayPodcast\Feed::class, Chris@16: 'GooglePlayPodcast\Renderer\Entry' => Extension\GooglePlayPodcast\Renderer\Entry::class, Chris@16: 'GooglePlayPodcast\Renderer\Feed' => Extension\GooglePlayPodcast\Renderer\Feed::class, Chris@0: 'ITunes\Entry' => Extension\ITunes\Entry::class, Chris@0: 'ITunes\Feed' => Extension\ITunes\Feed::class, Chris@0: 'ITunes\Renderer\Entry' => Extension\ITunes\Renderer\Entry::class, Chris@0: 'ITunes\Renderer\Feed' => Extension\ITunes\Renderer\Feed::class, Chris@0: 'Slash\Renderer\Entry' => Extension\Slash\Renderer\Entry::class, Chris@0: 'Threading\Renderer\Entry' => Extension\Threading\Renderer\Entry::class, Chris@0: 'WellFormedWeb\Renderer\Entry' => Extension\WellFormedWeb\Renderer\Entry::class, Chris@0: ]; Chris@0: Chris@0: /** Chris@0: * Do we have the extension? Chris@0: * Chris@0: * @param string $extension Chris@0: * @return bool Chris@0: */ Chris@0: public function has($extension) Chris@0: { Chris@0: return array_key_exists($extension, $this->extensions); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Retrieve the extension Chris@0: * Chris@0: * @param string $extension Chris@0: * @return mixed Chris@0: */ Chris@0: public function get($extension) Chris@0: { Chris@0: $class = $this->extensions[$extension]; Chris@0: return new $class(); Chris@0: } Chris@12: Chris@12: /** Chris@12: * Add an extension. Chris@12: * Chris@12: * @param string $name Chris@12: * @param string $class Chris@12: */ Chris@12: public function add($name, $class) Chris@12: { Chris@12: if (is_string($class) Chris@12: && (( Chris@12: is_a($class, Extension\AbstractRenderer::class, true) Chris@12: || 'Feed' === substr($class, -4) Chris@12: || 'Entry' === substr($class, -5) Chris@12: )) Chris@12: ) { Chris@12: $this->extensions[$name] = $class; Chris@12: Chris@12: return; Chris@12: } Chris@12: Chris@12: throw new InvalidArgumentException(sprintf( Chris@12: 'Plugin of type %s is invalid; must implement %s\Extension\RendererInterface ' Chris@12: . 'or the classname must end in "Feed" or "Entry"', Chris@12: $class, Chris@12: __NAMESPACE__ Chris@12: )); Chris@12: } Chris@12: Chris@12: /** Chris@12: * Remove an extension. Chris@12: * Chris@12: * @param string $name Chris@12: */ Chris@12: public function remove($name) Chris@12: { Chris@12: unset($this->extensions[$name]); Chris@12: } Chris@0: }