#:g1: colorizeの紹介

Posted 2014-01-24 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の25日目です。

colorizeとはなにか

 colorizeは、主にLisp系のソースコードをHTMLとして出力するためのライブラリです。

パッケージ情報

パッケージ名colorize
Quicklisp
CLiKihttp://cliki.net/colorize
Quickdocshttp://quickdocs.org/colorize

インストール方法

(ql:quickload :colorize)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 現在colorizeがサポートしている言語は、

あたりがあるようですが、当然ながらLisp方言の方に力が入っています。
このブログでも以前から使用していますが、マウスオーバーすると式の深さに応じて式に色が付きます。
その他には、該当するシンボルにはHyperSpecや、R5RSの仕様へのリンクが付けられます。

Common Lispでの設定例

 シンボルにHyperSpec等へのリンクを付加するには、HyperSpec等のシンボル表のファイルと、参照するウェブサイトを設定します。

(setq clhs-lookup::*hyperspec-map-file* "/l/HyperSpec/Data/Map_Sym.txt"
      clhs-lookup::*mop-map-file* "/l/AMOP/Mop_Sym.txt"
      clhs-lookup::*mop-root* "http://www.franz.com/support/documentation/9.0/doc/mop/")

等々

出力例

(colorize:html-colorization :common-lisp
                            "(c2mop:compute-applicable-methods-using-classes #'make-instance (list (find-class t)))")
;=>  "<span class=""><span class="paren1">(<span class=""><a href="http://www.franz.com/support/documentation/9.0/doc/mop/dictionary.html#compute-applicable-methods-using-classes" class="symbol">c2mop:compute-applicable-methods-using-classes</a> #'<a href="http://www.franz.com/support/documentation/9.0/doc/mop/dictionary.html#make-instance" class="symbol">make-instance</a> <span class="paren2">(<span class=""><a href="http://www.lispworks.com/reference/HyperSpec/Body/a_list.htm" class="symbol">list</a> <span class="paren3">(<span class=""><a href="http://www.lispworks.com/reference/HyperSpec/Body/f_find_c.htm" class="symbol">find-class</a> <a href="http://www.lispworks.com/reference/HyperSpec/Body/a_t.htm" class="symbol">t</a></span>)</span></span>)</span></span>)</span></span>"

 実際の表示では、

(c2mop:compute-applicable-methods-using-classes #'make-instance (list (find-class t)))

という風になります。

colorizeの雑多なこと

 利用する場合は、恐らくにそれなりにカスタマイズすることになると思いますが、設定にあたってはまり所をメモしておきます。

再計算防止のフラグがある

clhs-lookup::*populated-p*という再計算防止のフラグがあるので、テーブルを更新しても反映されない場合は、
(let ((clhs-lookup::*populated-p* nil))
  (clhs-lookup:populate-table))

とでもしましょう。

clhs-lookup:spec-lookupのテーブルの引き方が気に食わない

 ざっくり改造してしまっても良いと思いますが、Quicklisp等で自動でインストールすることも考えるとパッチを書いて後からロードするか、ラッパーを書くのが良いかなと思います。

(defun my-spec-lookup (term)
  (clhs-lookup:spec-lookup (string term)))

等々

まとめ

 今回は、colorizeを紹介してみました。
JavaScriptとCSSをカスタマイズできるようなブログシステムを利用の場合、colorizeを利用してみるのもまた一興ではないでしょうか。

comments powered by Disqus