2009年10月10日土曜日

[JS][Scala][Snippet] Syntax Highliter に Scala モード をつけてみた

コード整形表示に Syntax Highliter の Bloggerウィジェット を使っているのですが、さすがに Scala モードなんてないため、(Javaモードの箇所を見よう見まねで)付け加えてみました。

Scala言語仕様書の予約語、[]で囲まれたGenericsの型指定、コメント、文字列をハイライトします。ほかにもあるかもですが言語知識がこの程度なので...。
Javaモードにあった数値のハイライトは少々うざったかったので削ってます。
使ってみた感じはこちら => [Scala] Scala チートシート

付け加えたコードは以下。

dp.sh.Brushes.Scala=function()
{var keywords='abstract case catch class def do else extends false final finally for forSome if implicit import lazy match new null object override package private protected requires return sealed super this throw trait try true type val var while with yield :';this.regexList=[
{regex:dp.sh.RegexLib.SingleLineCComments,css:'comment'},
{regex:dp.sh.RegexLib.MultiLineCComments,css:'comment'},
{regex:dp.sh.RegexLib.DoubleQuotedString,css:'string'},
{regex:dp.sh.RegexLib.SingleQuotedString,css:'string'},
{regex:new RegExp(this.GetKeywords(keywords),'gm'),css:'keyword'},
{regex:new RegExp('=>','g'),css:'keyword'},
{regex:new RegExp('<-','g'),css:'keyword'},
{regex:new RegExp('<:','g'),css:'keyword'},
{regex:new RegExp('<%','g'),css:'keyword'},
{regex:new RegExp('>:','g'),css:'keyword'},
{regex:new RegExp('\\[[\\w\\d\\*]+\\]','g'),css:'type'}
];this.CssClass='dp-j';this.Style='.dp-j .type { color: darkred; }';}
dp.sh.Brushes.Scala.prototype=new dp.sh.Highlighter();dp.sh.Brushes.Scala.Aliases=['scala'];


使う場合は、class="scala" を指定します。
<pre name="code" class="scala">
// Scala コード
</pre>

4 件のコメント:

  1. 使わせてもらいまーす。型が複数の場合(例:[T, T])とか、型にプレースホルダを使用した場合(例:[String, _])とかがハイライトされなかったのでちょっと改造しました。

    \\[[\\w\\d\\*]+\\]

    \\[[_\\w\\d\\*]+(,\\s*[_\\w\\d\\*]+)*\\]

    返信削除
  2. pom さま
    コメントありがとうございます。1ヶ月も前にいただいていたのに気づかなかった・・・><。正規表現の改良もありがとうございます^^。

    返信削除
  3. 参考にさせていただきました〜
    ありがとうございます。

    返信削除
  4. kiyoshih さま
    コメントありがとうございます。
    お役に立てて良かったです。^^

    返信削除