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