次のようなJavaScriptコードがあるとします。
function Person(){}
var pro=Person.prototype;
pro["setName"]=function(){}
pro["setAge"]=function(){}
....
次に、クロージャコンパイラを使用してソースコードを縮小します。
ただし、クロージャコンパイラのコンパイルでは文字列リテラルが変更されないため、自分自身を置き換えたいと思います。
したがって、コードをコンパイルする前に、次のような文字列リテラルを置き換えたいと思います。
var a="setName",b="setAge";
function Person(){}
var pro=Person.prototype;
pro[a]=function(){}
pro[b]=function(){}
この仕事をするためにルビーを使いたいのですが、2つの質問があります。
- 1)交換方法は?
ファイルを1行ずつスキャンしてみましたが、文字列リテラルを見つけて置換するにはどうすればよいですか?
- 2)コードの競合
'a、b'のような変数を生成する必要があるので、それらがソースコードと競合しないようにするにはどうすればよいですか?たとえば、次のようなコードを生成します。
var something="setName";
では、ソースコードに「something」という名前の変数または関数が定義されている場合はどうでしょうか。