- 2010年1月26日 23:04
- Movable Type | SyntaxHighlighter
- Tweet

これは結構大変だった。前回いじった
shBrushPerl.jsと同じ場所
*1
にshBrushTT2.jsを置いても、それだけでは反映されない。次のファイルをいじる。
/mt/plugins/SyntaxHighlighter/lib/SyntaxHighlighter/Plugin.pm
# 149行目あたりに2行を追加
'html'=>'shBrushXml',
'xhtml'=>'shBrushXml',
'tt' => 'shBrushTT2',
'tt2' => 'shBrushTT2',
);
これで後はHTMLヘッダーテンプレートに"tt2"を加えるだけだ。
<$mt:SyntaxHighlighterInclude brush="html,perl,jscript,bash,tt2,plain" theme="default"$>肝心の
shBrushTT2.jsの中身は次の通り。
SyntaxHighlighter.brushes.TT2 = function() {
var funcs =
'undef unlink unpack unshift utime values vec ' +
'wait waitpid warn write defined length repeat ' +
'replace remove match search split chunk substr ' +
'list hash size keys values items each pairs ' +
'list sort nsort import defined exists delete ' +
'size item first last size max defined reverse ' +
'join grep sort nsort unshift push shift pop ' +
'unique import merge slice splice hash format ' +
'upper lower ucfirst lcfirst trim collapse ' +
'html html_entity xml html_para html_break ' +
'html_para_break html_line_break uri url indent ' +
'truncate repeat remove replace redirect eval ' +
'evaltt perl evalperl stdout stderr null';
var keywords =
'GET CALL SET DEFAULT INSERT INCLUDE PROCESS ' +
'WRAPPER BLOCK IF UNLESS ELSIF ELSE SWITCH CASE ' +
'FOREACH WHILE FILTER USE MACRO PERL RAWPERL TRY ' +
'THROW CATCH FINAL NEXT LAST RETURN STOP CLEAR ' +
'META TAGS DEBUG END Assert Autoformat CGI ' +
'Datafile Date Directory DBI Dumper File Filter ' +
'Format GD HTML Iterator Pod Scalar String Table ' +
'URL Wrap XML';
this.regexList = [
{ regex: /^#[^#]*$/g, css: 'comments' }
,{ regex: /#.*$/gm, css: 'comments' }
,{ regex: /\$\w+/g, css: 'variable' }
,{ regex: /\${[.\w]+}/g, css: 'variable' }
,{ regex: new RegExp(
this.getKeywords( funcs ), 'gm')
,css: 'functions' }
,{ regex: new RegExp(
this.getKeywords( keywords ), 'gm')
,css: 'keyword' }
,{ regex: SyntaxHighlighter.regexLib.doubleQuotedString
,css: 'string' }
,{ regex: SyntaxHighlighter.regexLib.singleQuotedString
,css: 'string' }
];
this.forHtmlScript(
{ left: /\[%-?/g, right: /-?%\]/g } );
};
SyntaxHighlighter.brushes.TT2.prototype
= new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.TT2.aliases
= ['tt', 'tt2'];
ちょっと面倒だったのは 2 種類のコメント。下に挙げた例のうち、1 つ目の複数行コメントはうまくハイライトできない場合がある *2 。解決できないものか......。後は Template::Manual にある語句を適当にコピーしまくって完成した。......だが、まだ不満があった。次回へ続く。
<!-- いきなり"#"で始まれば全体がコメント -->
[%# これはコメントです
これもコメントです
これもコメントです
%]
<!-- Perlスタイルのコメント -->
[% # これはコメントです
fig1 = 12345 # これはコメントです
fig2 = 23456 # これもコメントです
%]
[%- # chompもおk
INCLUDE inc/header.tt -%]
[% IF users %]
<p class="msg">[% users.${me.id}.name %]</p>
[% END %][%# IF %]
[%- INCLUDE inc/footer.tt -%]
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://blog.remora.cx/mt/mt-tb.fcgi/7
- Listed below are links to weblogs that reference
- SyntaxHighlighterでTemplate Toolkitをハイライトする from blog.remora.cx

