pukiwiki
SyntaxHighlighter

PukiWiki で SyntaxHighlighter

前提

PukiWiki と SyntaxHighlighter が導入済みであること。

pukiwiki.ini.php 編集

PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK を 1 から 0 に変更する。

$ cd /var/www/cgi-bin/pukiwiki; pwd
$ sudo cp -iv --preserve=all pukiwiki.ini.php pukiwiki.ini.php.`date +%Y%m%d`
$ ls -l pukiwiki.ini.php pukiwiki.ini.php.`date +%Y%m%d`
$ ls -lZ pukiwiki.ini.php pukiwiki.ini.php.`date +%Y%m%d`
$ sudo vi pukiwiki.ini.php

差分はこんな感じ。

$ diff -u pukiwiki.ini.php.`date +%Y%m%d` pukiwiki.ini.php
--- pukiwiki.ini.php.20170811   2016-02-15 05:19:02.000000000 +0900
+++ pukiwiki.ini.php    2017-08-11 16:28:47.613027007 +0900
@@ -53,7 +53,7 @@
 //   argsN+1
 //   }}
 //   #memo(This makes '#memo(foo)' to this)
-define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 1); // 1 = Disabled
+define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); // 1 = Disabled

 /////////////////////////////////////////////////
 // Language / Encoding settings

プラグイン設置

参考:
Plugin/highlight.inc.php - Sonots' PukiWiki プラグイン
http://pukiwiki.sonots.com/?Plugin%2Fhighlight.inc.php

$ cd plugin; pwd
$ sudo vi highlight.inc.php
$ sudo chown -v apache:apache highlight.inc.php
$ ls -l highlight.inc.php

作成するプラグインはこんな感じ。

$ cat highlight.inc.php
<?php
function plugin_highlight_init()
{
  global $head_tags;
  $head_tags[] = '<script type="text/javascript" src="/dist/syntaxhighlighter.js"></script>';
  $head_tags[] = '<link type="text/css" rel="stylesheet" href="/dist/theme.css">';
}

function plugin_highlight_convert()
{
  global $head_tags;

  $args   = func_get_args();
  $body   = array_pop($args);
  $class  = array_shift($args);

  $ret = '';
  $ret .= '<pre class="brush: ' . htmlspecialchars($class) . '">';
  $ret .= htmlspecialchars($body);
  $ret .= '</pre>';

  return $ret;
}
?>

後は PukiWiki で以下のようなコードを記載して反映されれば OK.

#highlight(sh){{
#!/bin/sh
echo "test"
exit 0
}}

どっとはらい。