rb2html - some sources to HTML
(2004.10.31 ページを分離。)
description / 概要
rb2htmlは,ソースコードをHTMLに整形します。行番号を付し,キーワード,文字列などに色を付けます(ハイライト)。
対応言語:
- Ruby
- Java
- JavaScript
- C/C++/Objective-C
- Python
- Haskell
- HTML/XML
- CSS
コマンドラインから実行する方法と、プログラムに組み込んで使う方法があります。
samples / サンプル
how to use / 使い方
インストール
今のところ、インストーラはありません。
- rb2htmlディレクトリを /usr/lib/ruby/site_ruby/1.8 にコピーしてください。
- rb2html.rbファイルを /usr/local/bin など実行パスの通っているディレクトリにコピーしてください。
- コマンド名で言語を指定したいときは、rb2html.rbからpy2html, c2htmlなどにリンクを張ってください。
カスタマイズ
今のところ、rb2htmlのソースを直接編集してください。
- rb2html/html_formatter.rb
- HTMLファイルを出力します。head要素などを修正します。
- rb2html/rb2html-conf.rb
- HTMLタグへの変換の設定ファイルです。トークンの種類 (数値、文字列など) とHTML spanタグに付ける属性を対応づけます。ハッシュ値でstyle属性、class属性などの値を指定できます。
コマンドラインから実行
整形したHTMLデータを標準出力に出力します。
$ rb2html.rb [-x 言語] [入力ファイル名 ... ]
-xオプションで明示的に言語を指定できます。ruby, python, c, java, javascript, haskell, html, xml, css が指定できます。-xオプションがない場合は、入力ファイル名の拡張子、rb2html コマンドの名前(コマンド名がjava2html なら java)で言語を決めます。
入力ファイル名を指定した場合は、そのファイルを整形します。入力ファイル名を指定しない場合は、標準入力から読み込みます。
プログラムに埋め込む
プログラム内部で呼び出したり、ERBに埋め込むこともできます。Rb2HTML::Factory に言語名またはファイル拡張子を与えてフォーマッタインスタンスを生成し、メソッドを呼び出します。
<% require 'rb2html/factory' f = Rb2HTML::Factory.get_formatter 'ruby' %> <%= f.format_code <<'EOF', false puts "hoge" EOF %>
フォーマッタのメソッド:
- output_file(io_or_str, start_lineno = 1)
- HTMLファイルの文字列を返します。start_linenoは開始行番号で、負数だと行番号を付けません。
- format_code(io_or_str, start_lineno = -1)
- 主にソースコード片を整形するときに使います。<pre>〜<pre>だけを生成します。start_linenoは開始行番号で、負数だと行番号を付けません。
字句解析器だけ使うこともできます。
require "rb2html/ruby_lexer.rb"
lex = Rb2HTML::RubyLexer.new
ary = lex.parse(source)
ary.each {|token|...}
license / ライセンス
rb2htmlは、オープンソースソフトウェアです。Common Public License V1.0でライセンスします。
rb2html is an OSI Certified Open Source software.
rb2html is licensed under Common Public License V1.0.
downloads / ダウンロード
- 版 / Version:
- 2.4 (revision 265)
- 公開日 / Release Date:
- 2008.4.1
- ファイル / File:
- rb2html-2.4.tar.gz
- 主な変更点 / Changes:
-
- 出力するHTMLを ol - li タグを使うようにして、コピー & ペーストしやすいようにした。
- 見栄えを今風に。
- Factory.format() を廃止。
- リファクタリング。
- [Haskell] [Java] [JavaScript] [Python] 文字列中のエスケープシーケンスの扱いがまずかったのを修正。
- [Java] [JavaScript] 最後のトークンの出力漏れを修正。
- [Java] ジェネリクス (Generics) に対応。
- [C] 演算子なども切り出すようにした。
- [C] C99のキーワードを追加。
- [JavaScript] JSON, E4X に対応。
- [JavaScript] 演算子 /= のtypo? 修正。
- [HTML] 名前空間を使ったときの終了タグの空白の扱いを修正。
- [HTML] 文書型宣言は小文字でも可。
- [HTML] script要素の内容をJavaScriptとして色づけ。
- 版 / Version:
- 2.3 (revision 135)
- 公開日 / Release Date:
- 2007.5.17
- ファイル / File:
- rb2html-2.3.tar.gz
- 主な変更点 / Changes:
-
- JavaScript, Haskellを追加。
- 字句解析とHTML属性との対応付け設定をrb2html-conf.rbにまとめた。
- [HTML] ERB (eRuby) に対応。<%, <%=から%>までをRubyスクリプトとみなして切り出すようにした。
- [Java] 数値、アノテーションなどを切り出すようにした。
- [Ruby] 特異クラスの<<を(ヒアドキュメントではなく)正しく認識するようにした。
- [Ruby] シンボル=>のとき、'='はシンボルの一部ではない。
- 版 / Version:
- 2.2.1
- 公開日 / Release Date:
- 2007.1.16
- ファイル / File:
- rb2html-2.2.1.tar.gz
- 主な変更点 / Changes:
-
- [Java] [C/C++] 行番号出力on/offを実装。Thanks to 橋本さん
- [Ruby] ::の扱いが正しくなかったのを修正。
- Rb2HTML#format_code()の初期値を、行番号を出力しないように変更。
- 版 / Version:
- 2.2
- 公開日 / Release Date:
- 2006.11.11
- ファイル / File:
- rb2html-2.2.tar.gz
- 主な変更点 / Changes:
-
- HTML/XML, CSSに対応。
- [Python] バグフィックス。長い文字列を誤判定していた。
- [Ruby] バグフィックス。%表記でエラーになることがあった。defined?はキーワード。
- [C/C++] 動かなくなっていたのを修正。
- Factory.format() を追加。ERBで使いやすいようにした。
- 行番号を出力するかどうか選択できるようにした。
- コマンドラインオプションで言語名を指定できるようにした。
- 版 / Version:
- 2.1
- 公開日 / Release Date:
- 2006.10.26
- ファイル / File:
- rb2html-2.1.tar.gz
- 主な変更点 / Changes:
-
- Pythonに対応。
- [Ruby] 誤った字句解析をしてしまうパターンをいくつか修正。
リンク
- LangScan: ソースコード解析ライブラリ
- 同種のソフトのためのライブラリ。LangScanのほうが豊富なプログラミング言語に対応。Eiffel, D, Io, Lua, OCaml, C#, PHP, Perl, Brainfuck, Shell Script, Emacs Lisp, Scheme
- syntaxhighlighter - Google Code
- プログラミング言語のハイライト。100%クライアントで処理。rb2htmlの対極。