SyntxHighlighterに新しい言語を追加する方法


ブログにLuaコードを貼ることが多いですが、SyntxHighlighterプラグインはデフォルトではLua言語に対応していませんので、Synt×Highlighterのためにどのように追加して新しい言語をアクティブにするかを検討しました。ここでは過程と同じニーズの子供靴を共有します。私はLua言語を追加しましたので、以下の過程説明はLuaを例にして、必要な言語を追加する時に、該当項目をカスタマイズ設定に変更すればいいです。1.このブログから必要な言語を探してください。http://www.undermyhat.org/blog/2009/09/list-of-brushes-syntaxhighligher/;2.対応するshBrushXXX.jsスクリプトをダウンロードします。例えば、私がダウンロードしたのはshBrushLua.jsです。このように見えます。

SyntaxHighlighter.brushes.Lua = function()
{
 var keywords = 'break do end else elseif function if local nil not or repeat return and then until while this';
 var funcs = 'math\\.\\w+ string\\.\\w+ os\\.\\w+ debug\\.\\w+ io\\.\\w+ error fopen dofile coroutine\\.\\w+ arg getmetatable ipairs loadfile loadlib loadstring longjmp print rawget rawset seek setmetatable assert tonumber tostring';

 this.regexList = [
  { regex: new RegExp('--\\[\\[[\\s\\S]*\\]\\]--', 'gm'),  css: 'comments' },
  { regex: new RegExp('--[^\\[]{2}.*$', 'gm'),       css: 'comments' }, // one line comments
  { regex: SyntaxHighlighter.regexLib.doubleQuotedString,     css: 'string' },    // strings
  { regex: SyntaxHighlighter.regexLib.singleQuotedString,     css: 'string' },    // strings
  { regex: new RegExp(this.getKeywords(keywords), 'gm'),  css: 'keyword' }, // keyword
  { regex: new RegExp(this.getKeywords(funcs), 'gm'),      css: 'func' },  // functions
  ];
}

SyntaxHighlighter.brushes.Lua.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Lua.aliases = ['lua'];

3.FTPツールを使ってWordPress空間に登録し、wp-content/pluginsディレクトリに入り、新しいディレクトリを作成し、意味のある名前を取ってください。例えば、syntaxhighlighter-lua。4.shBrushLua.jsを新たに作成したディレクトリにアップロードします。5.このディレクトリにもう一つのshBrushLua.phpファイルを作成し、下記の内容を追加します。

<?php
/*
Plugin Name: SyntaxHighlighter Evolved: Lua
Description: Adds support for the Lua language to the SyntaxHighlighter Evolved plugin.
Author: Benny
Version: 1.0.0
*/

// SyntaxHighlighter Evolved doesn't do anything until early in the "init" hook, so best to wait until after that
add_action( 'init', 'syntaxhighlighter_lua_regscript' );

// Tell SyntaxHighlighter Evolved about this new language/brush
add_filter( 'syntaxhighlighter_brushes', 'syntaxhighlighter_lua_addlang' );

// Register the brush file with WordPress
function syntaxhighlighter_lua_regscript() {
    wp_register_script( 'syntaxhighlighter-brush-lua', plugins_url( 'shBrushLua.js', __FILE__ ), array('syntaxhighlighter-core'), '1.1.1' );
}

// Filter SyntaxHighlighter Evolved's language array
function syntaxhighlighter_lua_addlang( $brushes ) {
    $brushes['lua'] = 'lua';
    return $brushes;
}
?>
6.ファイルは全部用意しました。OK。WordPressバックグラウンド管理のPluginsに入ると、新しく追加されたsyntaxhighlighter-luaが見られます。アクティブにします。
ドーンIt shuld work now
実際には、新しく追加されたjsとphpファイルは、SyntxHighlighterプラグイン自体のディレクトリに置くこともできますが、プラグインとして独立させるメリットは、SyntaxHighlighterがアップグレードされると、あなたの個人構成は上書きのために失われることはありません。