rb2html

(2004.10.31 ページを分離。)

description / 概要

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

対応言語:

  • Ruby
  • Java
  • JavaScript
  • C++ / Objective-C
  • Python
  • Haskell
  • HTML/XML
  • CSS

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

samples / サンプル

rb2html サンプル

downloads / ダウンロード

ダウンロード

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|...}

リンク

LangScan: ソースコード解析ライブラリ
同種のソフトのためのライブラリ。LangScanのほうが豊富なプログラミング言語に対応。Eiffel, D, Io, Lua, OCaml, C#, PHP, Perl, Brainfuck, Shell Script, Emacs Lisp, Scheme. ただ、2005年で止まっている。
syntaxhighlighter - Google Code
プログラミング言語ソースコードのハイライト。JavaScript で書かれており, 100%クライアントで処理。rb2htmlの対極。