Scalaのシンタックスハイライト

30分プログラム、その564。Scalaシンタックスハイライトをやってみる。
Scalaっておもしろいですよね。でも、はてなだとシンタックスハイライトされなくてダサいですよね。

というわけで、Scalaでもシンタックスハイライトされるようにしてみよう。はてなダイアリーライター(略称:はてダラ)のフィルタ機能をつかってやれば、わりと簡単にできるはずだ。

使い方

scalaの文法ファイルを入れる

ScalaVimIntegration - HRJあたりからダウンロードしてくる。Scalaの配布ファイルにも含まれているらしいけど。

はてダラの設定

config.txtに

filter: nkf -w %s | perl scala-sh.pl | nkf -e

を追加する。文字コード周りはさぼってる。

投稿する

投稿するとハイライトされてる。やったね。

object HelloWorld {
  def main(args: Array[String]) {
    println("Hello Scala World!")
  }
}

ソースコード

#! /usr/bin/perl
# -*- mode:perl; coding:utf-8 -*-
#
# syntax-hilight.pl -
#
# Copyright(C) 2009 by mzp
# Author: MIZUNO Hiroki / mzpppp at gmail dot com
# http://howdyworld.org
#
# Timestamp: 2009/04/12 21:43:40
#
# This program is free software; you can redistribute it and/or
# modify it under MIT Lincence.
#

use strict;
use warnings;
use Data::Dumper;
use Text::VimColor;

sub highlight($){
    my ($string) = @_;

    my $syntax = Text::VimColor->new(
	filetype => 'scala',
	string => $string);
    $syntax->html;
}

$_ = join '',<>;
s{^>\|scala\|\n(.*?)^\|\|<$
}{
    my $code = highlight($1);
   ">||\n${code}||<"
}gxsem;

print;