/** * A filter function for shortcode filters * * @param string $name The name of the shortcode filter to be * applied. * @param string $content The content to be filtered. * @param mixed $context The Twig context * @param mixed $environment The Twig environment * * @return string The filtered content (here a hash); use * $this->normalize() to replace the hash * with the filtered content. */ protected function filterShortcode($name, $content, $context = null, $environment = null) { $output = $content; $extra = [$name, $this]; $filters = $this->twig->getShortcodeFilter($name); foreach ($filters as $filter) { $arguments = [$output]; if ($filter->needsEnvironment()) { $arguments[] = $environment; } if ($filter->needsContext()) { $arguments[] = $context; } $arguments = array_merge($arguments, $filter->getArguments(), $extra); $output = call_user_func_array($filter->getCallable(), $arguments); if (!$output) { break; } } // Replace shortcode with a hash to be replaced later return $this->hash($output); }