C/C++のソースコードから、文字列リテラルをそのまま取り出すRubyプログラム(1.9.x以降)を作ったので公開します。
文字列リテラルの抽出はgettextのxgettextコマンドでもできるけど、
xgettextの場合はタブを”\t”に変えたり、継続行の”\改行”を各行ごとに”行の内容”に変えたりするので、
ソースコードに書かれたまま取り出したいというちょっと目的に合わなかった。
ソースコードに書かれたままっていのうは、後で置換しやすくするため。
それは、また別の機会に書きます。
以下が抽出コード。もっときれいにかけるような気がするけど、まぁ30分くらいで書いたから、こんなもんでしょ。
#!ruby # -*- coding : utf-8 -*- # # Extract all string literal from C/C++ # Author: Hiroki Najima (Nazy) 2012. h.najima at gmail dot com # License: CC BY # strings = [] File.open(ARGV[0], "r") do |f| f.chars do |ch| case ch when '/' case f.getc when '*' until f.getc == '*' && f.getc == '/' end when '/' until f.getc == "\n" end end when '"' acc = ch f.chars do |ch| case ch when '\\' acc << ch << f.getc when '"' acc << ch break else acc << ch end end strings << acc when "'" f.chars do |ch| case ch when '\\' f.getc when "'" break end end else #print ch end end end