Top > IT > CMS > Pukiwiki > Plugins > NewPlugins > sxh.inc.php
Last-modified: Sat, 14 Sep 2013 18:57:09 JST
Counter:1791 Today:1 Yesterday:0 Online:4
このエントリーをはてなブックマークに追加

sxh.inc.php

About

SyntaxHighlighter」を利用してソースコードを装飾します。

  • SyntaxHighlighter に同梱される css を編集しています。
    • SyntaxHighlighter の単純なアップデートには対応できないことになります。
    • 詳細についてはこの記事の末尾に掲載しています。

対応バージョン

  • 3.0.83に対応する全ての機能を実行することが出来ます。

Format

#sxh(language, [ first-line, theme, (highlight:highlight) ]){{
コード
}}

Parameter

  • language
    • 装飾する言語を指定します。
    • 未指定の場合は「plain」になります。
  • first-line
    • コードの一行目の行番号を決定します。
    • 未指定の場合は「1」になります。
  • theme
    • 装飾に利用するテーマ(スタイルシート)を決定します。
    • 未指定の場合は「shCoreDefault」になります。
    • 下にサンプルがあります。
  • (highlight)
    • 注目させる行番号を指定します。
      • 「first-line」オプションで指定した行数を用いて指定します。
    • 未指定の場合は全ての行がデフォルトの装飾になります。
    • 「:」で区切って複数行指定することが出来ます(制限は無い)。
      • ex.「1:3:10:11」で与えられた行数を全て装飾します。

Theme Samples

shCoreDefault

class hogehoge:interface{

private static hoge;

public void hoge(){
     printf(hoge);
}

}

shCoreRDark

class hogehoge:interface{

private static hoge;

public void hoge(){
     printf(hoge);
}

}

shCoreMidnight

class hogehoge:interface{

private static hoge;

public void hoge(){
     printf(hoge);
}

}

shCoreMDUltra

class hogehoge:interface{

private static hoge;

public void hoge(){
     printf(hoge);
}

}

shCoreFadeToGrey

class hogehoge:interface{

private static hoge;

public void hoge(){
     printf(hoge);
}

}

shCoreEmacs

class hogehoge:interface{

private static hoge;

public void hoge(){
     printf(hoge);
}

}

shCoreEclipse

class hogehoge:interface{

private static hoge;

public void hoge(){
     printf(hoge);
}

}

shCoreDjango

class hogehoge:interface{

private static hoge;

public void hoge(){
     printf(hoge);
}

}

関連ファイルのカスタマイズ

開発メモです。「shCoreDefault」他「shCoreXXX」系のCSSは「class="syntaxhighlighter"」に対して有効であるため、標準のままでは表示できない。そこでこのclassに「shCoreXXX」を足してやることで各要素のスタイルを識別することにした。幸いなことに、「syntaxhighlighter」はオプションで任意のclassを追記できるので、CSSのみ書き換える。具体的には「.syntaxhighlighter」とある所を全て置換して「.syntaxhighlighter.shCoreXXX」とするだけである。複数classに対してセレクタをかけるので多少速度が落ちるのが玉に傷だがJavascriptなのでサーバーサイドに負荷がかからないだけ良しとする。