public static function highlight($raw_body) { $body = sfMarkdown::doConvert($raw_body); $matches = array(); $langs = array(); preg_match_all("/<pre><code>\\[(\\w*)\\](\\r?\\n)+(.+)(\\r?\\n)+<\\/code><\\/pre>/isU", $body, $matches, PREG_SET_ORDER); if (sizeof($matches) > 0) { $service = new SnippetServiceClient(); $cnt = 1; foreach ($matches as $match) { sfLogger::getInstance()->info("From myUtils: " . $match[3]); $languageLower = $match[1]; $languageUpper = strtoupper($match[1]); sfLogger::getInstance()->info("myUtils languages: {$languageLower} {$languageUpper}" . sizeof(self::$languages)); if (in_array($languageUpper, self::$languages)) { $highlighted = $service->highlight($languageUpper, htmlspecialchars_decode($match[3])); $highlighted['snippet'] = "<div class=\"code-wrapper\">{$highlighted['snippet']}</div>"; $body = str_replace($match[0], $highlighted['snippet'], $body, $cnt); $langs[$languageLower] = $langs[$languageLower] ? $langs[$languageLower] + 1 : 1; } else { sfLogger::getInstance()->info("myUtils : {$languageLower} is not supported."); $langs[$languageLower] = $langs[$languageLower] ? $langs[$languageLower] + 1 : 1; $body = str_replace($match[0], "<div class=\"code-wrapper\"><pre><code>{$match[3]}</code></pre></div>", $body, $cnt); } } } return array('body' => $body, 'langs' => $langs); }
public function executeHighlight() { $url = $this->getRequestParameter('url'); $language = $this->getRequestParameter('language'); $code = $this->getRequestParameter('code'); $service = new SnippetServiceClient(); $output = $service->highlight($language, $code); $this->code = $output['snippet']; $this->getResponse()->setTitle($url); }