read()) !== false) { if (substr($entry, -4, 4) !== ".css") { continue; } if ($filePaths) { $results[] = implode(DIRECTORY_SEPARATOR, array($folder, $entry)); } else { $results[] = basename($entry, ".css"); } } $dh->close(); } return $results; } /** * Get the RGB representation used for the background of a given theme as an * array of three numbers. * * @api * * @since 9.18.1.1 * * @param string $name The stylesheet name (with or without the extension) * * @throws \DomainException when no stylesheet with this name exists * * @return float[] An array representing RGB numerical values */ function getThemeBackgroundColor($name) { return _getThemeBackgroundColor(_getNoCssExtension($name)); } /** * Get the contents of the given stylesheet. * * @api * * @since 9.15.8.1 * * @param string $name The stylesheet name (with or without the extension) * * @throws \DomainException when the no stylesheet with this name exists * * @return false|string The CSS content of the stylesheet or FALSE when * the stylesheet content could be read */ function getStyleSheet($name) { $path = getStyleSheetPath($name); return file_get_contents($path); } /** * Get the absolute path to the folder containing the stylesheets distributed in this package. * * @api * * @since 9.15.8.1 * * @return string An absolute path to the folder */ function getStyleSheetFolder() { $paths = array(__DIR__, '..', 'styles'); return implode(DIRECTORY_SEPARATOR, $paths); } /** * Get the absolute path to a given stylesheet distributed in this package. * * @api * * @since 9.15.8.1 * * @param string $name The stylesheet name (with or without the extension) * * @throws \DomainException when the no stylesheet with this name exists * * @return string The absolute path to the stylesheet with the given name */ function getStyleSheetPath($name) { $name = _getNoCssExtension($name); $path = implode(DIRECTORY_SEPARATOR, array(getStyleSheetFolder(), $name)) . ".css"; if (!file_exists($path)) { throw new \DomainException("There is no stylesheet with by the name of '$name'."); } return $path; } /** * Convert the HTML generated by Highlighter and split it up into an array of lines. * * @api * * @since 9.15.6.1 * * @param string $html An HTML string generated by `Highlighter::highlight()` * * @throws \RuntimeException when the DOM extension is not available * @throws \UnexpectedValueException when the given HTML could not be parsed * * @return string[]|false An array of lines of code as strings. False if an error occurred in splitting up by lines */ function splitCodeIntoArray($html) { if (!extension_loaded("dom")) { throw new \RuntimeException("The DOM extension is not loaded but is required."); } $dom = new \DOMDocument(); if (!$dom->loadHTML($html)) { throw new \UnexpectedValueException("The given HTML could not be parsed correctly."); } $spans = $dom->getElementsByTagName("span"); /** @var \DOMElement $span */ foreach ($spans as $span) { $classes = $span->getAttribute("class"); $renderedSpan = $dom->saveHTML($span); if (preg_match('/\R/', $renderedSpan)) { $finished = preg_replace( '/\R/', sprintf('%s', PHP_EOL, $classes), $renderedSpan ); $html = str_replace($renderedSpan, $finished, $html); } } return preg_split('/\R/', $html); }