rb2html - some sources to HTML

(2004.10.31 ページを分離。)

description / 概要

rb2htmlは,ソースコードをHTMLに整形します。行番号を付し,キーワード,文字列などに色を付けます(ハイライト)。

対応言語:

コマンドラインから実行する方法と、プログラムに組み込んで使う方法があります。

samples / サンプル

rb2html サンプル

how to use / 使い方

インストール

今のところ、インストーラはありません。

  1. rb2htmlディレクトリを /usr/lib/ruby/site_ruby/1.8 にコピーしてください。
  2. rb2html.rbファイルを /usr/local/bin など実行パスの通っているディレクトリにコピーしてください。
  3. コマンド名で言語を指定したいときは、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 / ダウンロード

Trunk - HEAD

リリースされていない最新状態は, gitリポジトリから入手できます。

$ git clone git@git.assembla.com:netsphere.git
$ git filter-branch --subdirectory-filter rb2html HEAD

次のページで, ソースコードを閲覧することもできます。

リリース版

版 / 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の対極。