© 2010-2018 sonota88 <[email protected]>
Java製の SQL整形ツール BlancoSqlFormatter
blancoSqlFormatter - SQL整形ライブラリwww.igapyon.jp/blanco/blancosqlformatter.html
を Ruby に移植したものです。完全な移植を目指したものではなく、改造が加わっています。
$ ruby setup.rb
標準入力で SQL を渡します。
$ echo "select a,b from c;" | anbt-sql-formatter SELECT a , b FROM c ; $
後は適宜 Emacs などエディタと連携させたりして使ってください。
GNU Lesser General Public License.
- sonota
-
Ruby へ移植
次はオリジナルの Java版のクレジットの写しです。
- 渡辺義則 / Yoshinori WATANABE / A-san
-
初期バージョンの開発
- 伊賀敏樹 (Tosiki Iga / いがぴょん)
-
維持メンテ担当
-
名前空間 AnbtSql を導入。また、ファイル名をAnbtSqlFormatter.java → formatter.rb といったように変更。
-
#format_list から #format_list_main_loop などを分離した。
-
粗トーカナイズ処理を coarse-tokenizer.rb に分離。おそらく Java版からの一番大きな変更。本質的に SQL とは関係の薄い文字列とコメントのトーカナイズだけを別に行う。
-
フロントエンドのサンプル追加。
-
テストを追加(特に単体テスト)。
-
AnbtSql::Parser
-
粗トークン(文字列、コメント、それ以外)に分割
-
トークンに分割
-
-
AnbtSql::Formatter
-
トークンのリストを元にインデント等を整形
-
-
formatter に与える rule に追加
-
関数として扱うキーワードの追加
-
特定の改行・インデンテーション規則に対応するキーワードを追加
-
インデントに用いる文字を指定
-
キーワードの大文字・小文字指定
-
-
もっと細かくカスタマイズしたい場合はAnbtSql::Formatter#format_list_main_loop を継承、またはモンキーパッチング等で修正(オーバーライド)してください。
$ ./test.sh
-
一行コメントの次でインデントが乱れる点が修正候補となっていたため修正した。AnbtSql::Formatter#format_list_main_loop 内で対処したが、やっていることは末尾の改行を削っているだけなのでもっと前のトークン分割時に対処した方が良いかも。