コード例 #1
0
ファイル: WikiTest.php プロジェクト: renduples/alibtob
 public function view()
 {
     $s = file_get_contents(BASEVIEW . '/' . v('wiki_test.html'));
     $s = Wiki2html::process($s);
     $s = SyntaxHighlighter::process($s);
     $v = $this->smarty;
     $v->assign('inc_content', v('wiki_test_footer.html'));
     $v->assign('content', $s);
     $this->display($v, v('index.html'));
 }
コード例 #2
0
 static function setHooks($parser)
 {
     global $wgHooks;
     $parser->extSyntaxHighlighter = new self();
     if (!SyntaxHighlighter::$hookInstalled) {
         $wgHooks['ParserAfterTidy'][] = array($parser->extSyntaxHighlighter, 'addHeadItems');
         SyntaxHighlighter::$hookInstalled = true;
     }
     $parser->setHook('source', array($parser->extSyntaxHighlighter, 'source'));
     return true;
 }
コード例 #3
0
 public function AddRegexMatchesBasic(CodePattern $pattern, $text)
 {
     $text = preg_replace_callback($pattern->GetPatterns(), function ($match) use($pattern) {
         $classes = $pattern->GetClasses();
         $handlers = $pattern->GetHandlers();
         $output = '';
         // reassemble components
         foreach ($pattern->GetComponents() as $name) {
             if (isset($match[$name])) {
                 $region = $match[$name];
                 // check Handlers
                 if (isset($handlers[$name])) {
                     $handler_set = $handlers[$name];
                     if (!is_array($handler_set)) {
                         $handler_set = [$handler_set];
                     }
                     // probe Handlers
                     foreach ($handler_set as $handler) {
                         if (is_string($handler)) {
                             $region_new = SyntaxHighlighter::Execute($region, [$handler => ['__probe' => true]]);
                         } else {
                             //$region_new = $this->AddRegexMatchesBasic($handler, $region);
                             //$region_new = $this->ProcessPatterns([$handler], $region);
                             $rm = new self();
                             $region_new = $rm->ProcessPatterns([$handler], $region);
                         }
                         // only use the first successful probe
                         if ($region_new !== $region) {
                             $region = $region_new;
                             break;
                         }
                     }
                 }
                 if (isset($classes[$name])) {
                     $region = $this->WrapCodeClass($region, $classes[$name]);
                 }
                 $output .= $region;
             }
         }
         if (isset($classes[NULL])) {
             $output = $this->WrapCodeClass($output, $classes[NULL]);
         }
         return $this->AddReplacedValue($output);
     }, $text);
     return $text;
 }
コード例 #4
0
ファイル: CodeFormatter.php プロジェクト: jdauie/subvert
    public static function Format($code, $handlers)
    {
        $showGutter = false;
        $code = htmlentities($code, ENT_NOQUOTES);
        //$code = str_replace("\t", '	', $code);
        //$code = str_replace(" ", ' ', $code);
        if ($handlers) {
            $code = SyntaxHighlighter::Execute($code, $handlers);
        }
        $code_lines = explode("\n", $code);
        $code_line_numbers = [];
        foreach ($code_lines as $i => &$line) {
            if (empty($line)) {
                $line = '​';
            }
            //$line = sprintf('<div>%1$s</div>', $line);
            $line = sprintf('<div><code>%1$s</code></div>', $line);
            //$line = sprintf('%1$s', $line);
            $code_line_numbers[] = sprintf('<div>%1$s</div>', $i + 1);
        }
        $code = implode('', $code_lines);
        //$code = implode("\n", $code_lines);
        $gutter = '';
        if ($showGutter) {
            $code_line_numbers_str = implode('', $code_line_numbers);
            $placeholder = str_repeat('&nbsp;', strlen((string) count($code_lines)));
            $gutter = <<<EOS
\t\t\t<td><div class="gutter">{$code_line_numbers_str}</div><div class="gutter-placeholder">{$placeholder}</div></td>
EOS;
        }
        $code = <<<EOS
\t\t<pre><code><table>
\t\t\t<tr>
\t\t\t\t{$gutter}
\t\t\t\t<td><div class="code">{$code}</div></td>
\t\t\t</tr>
\t\t</table></code></pre>
EOS;
        return $code;
    }