(2004.10.31 ページを分離。)
description / 概要
rb2htmlは,ソースコードをHTMLに整形します。行番号を付し,キーワード,文字列などに色を付けます(ハイライト)。
対応言語:
- Ruby
- Java
- JavaScript
- C++ / Objective-C
- Python
- Haskell
- HTML/XML
- CSS
コマンドラインから実行する方法と、プログラムに組み込んで使う方法があります。
samples / サンプル
rb2html サンプル
downloads / ダウンロード
ダウンロード
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|...}
リンク
- LangScan: ソースコード解析ライブラリ
- 同種のソフトのためのライブラリ。LangScanのほうが豊富なプログラミング言語に対応。Eiffel, D, Io, Lua, OCaml, C#, PHP, Perl, Brainfuck, Shell Script, Emacs Lisp, Scheme. ただ、2005年で止まっている。
- syntaxhighlighter - Google Code
- プログラミング言語ソースコードのハイライト。JavaScript で書かれており, 100%クライアントで処理。rb2htmlの対極。