contentEx = array('GoogleCodePrettify_Plugin', 'parse'); Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('GoogleCodePrettify_Plugin', 'parse'); Typecho_Plugin::factory('Widget_Abstract_Comments')->contentEx = array('GoogleCodePrettify_Plugin', 'parse'); Typecho_Plugin::factory('Widget_Archive')->header = array('GoogleCodePrettify_Plugin', 'header'); Typecho_Plugin::factory('Widget_Archive')->footer = array('GoogleCodePrettify_Plugin', 'footer'); } /** * 禁用插件方法,如果禁用失败,直接抛出异常 * * @static * @access public * @return void * @throws Typecho_Plugin_Exception */ public static function deactivate(){} /** * 获取插件配置面板 * * @access public * @param Typecho_Widget_Helper_Form $form 配置面板 * @return void */ public static function config(Typecho_Widget_Helper_Form $form){} /** * 个人用户的配置面板 * * @access public * @param Typecho_Widget_Helper_Form $form * @return void */ public static function personalConfig(Typecho_Widget_Helper_Form $form){} /** * 输出头部css * * @access public * @param unknown $header * @return unknown */ public static function header() { $cssUrl = Helper::options()->pluginUrl . '/GoogleCodePrettify/src/prettify.css'; echo ''; } /** * 输出尾部js * * @access public * @param unknown $header * @return unknown */ public static function footer() { $jsUrl = Helper::options()->pluginUrl . '/GoogleCodePrettify/src/prettify.js'; echo ''; echo ''; } /** * 解析 * * @access public * @param array $matches 解析值 * @return string */ public static function parseCallback($matches) { $language = trim($matches[2]); $map = array( 'js' => 'javascript', 'as' => 'actionscript', 'as3' => 'actionscript3' ); if (!empty($language) && isset($map[$language])) { $language = $map[$language]; } $source = '
'; $numberItem = ''; return $source . $numberItem . $sourceItem . '
'; $sourceItem = ''; $sourceItem .= '
'; $sourceList = explode("\n", trim($matches[3])); foreach ($sourceList as $key => $sourceLine) { $numberItem .= ''; $sourceItem .= ''; } $numberItem .= '
' . ($key + 1) . '
' . htmlspecialchars($sourceLine) . '
'; } /** * 插件实现方法 * * @access public * @return void */ public static function parse($text, $widget, $lastResult) { $text = empty($lastResult) ? $text : $lastResult; if ($widget instanceof Widget_Archive || $widget instanceof Widget_Abstract_Comments) { return preg_replace_callback("/<(code|pre)(\s*[^>]*)>(.*?)<\/\\1>/is", array('GoogleCodePrettify_Plugin', 'parseCallback'), $text); } else { return $text; } } }