handlers = new HandlerContainer(); } /** * Get the names for all registered shortcodes. * * @return array */ public function getNames() { return $this->handlers->getNames(); } /** * Add a new shortcode to the handler container. * * @param string $name * @param mixed $callback */ public function add($name, $callback) { $this->handlers->add($name, $callback); } /** * Remove the specified shortcode name from the handler. * * @param string $name */ public function remove($name) { if ($this->exists($name)) { $this->handlers->remove($name); } return $this; } /** * Remove all registered shortcodes * * @return self */ public function destroyAll() { $this->handlers = new HandlerContainer(); return $this; } /** * Strip any shortcodes from the content. * * @param string $content * * @return string */ public function strip($content) { $handlers = new HandlerContainer(); $handlers->setDefault(function(ShortcodeInterface $s) { return $s->getContent(); }); $processor = new Processor(new RegexParser(), $handlers); return $processor->process($content); } /** * Get count from all shortcodes. * * @return int */ public function count() { return count($this->handlers->getNames()); } /** * Return true is the given name exist in shortcodes array. * * @param string $name * * @return bool */ public function exists($name) { return $this->handlers->has($name); } /** * Return true is the given content contains the named shortcode. * * @param string $content * @param string $name * * @return bool */ public function contains($content, $name) { $hasShortcode = false; $handlers = new HandlerContainer(); $handlers->setDefault(function(ShortcodeInterface $s) use($name, &$hasShortcode) { if($s->getName() === $name) { $hasShortcode = true; } }); $processor = new Processor(new RegexParser(), $handlers); $processor->process($content); return $hasShortcode; } /** * Parse content and replace parts of it using registered handlers * * @param $content * * @return string */ public function parse($content) { $processor = new Processor(new RegexParser(), $this->handlers); return $processor->process($content); } }