3年前からずっと携帯向けサーバサイドJavaScriptを実行可能なWEBサーバを作っていて、どうしてもStringクラスのreplace()メソッドが呼び出したくなりました。
要はJavaScriptで記述するところの
var str = "Twas the night before Xmas...";
str.replace(/xmas/i, "Christmas");
をSpiderMonkeyを使ってC言語で書いたプログラムから実行したいのですが、なかなかうまくいかなくてハマッてしまいました。
当初、JSVAL_TO_OBJECT()で得られたオブジェクトを使って、JS_CallFunctionName()でreplace()メソッドを呼び出そうとしていましたが、うまくいきませんでした。
いろいろ試してみたところ、JS_ValueToObject()で得られたオブジェクトを使ってJS_CallFunctionName()を呼び出せばよいようです。
APIリファレンスをよく読むとちゃんと書いてありました。
If v is a boolean value, a number, or a string, the result is a new wrapper object of type Boolean, Number, or String.
要はJavaScriptで記述するところの
var str = "Twas the night before Xmas...";
str.replace(/xmas/i, "Christmas");
をSpiderMonkeyを使ってC言語で書いたプログラムから実行したいのですが、なかなかうまくいかなくてハマッてしまいました。
当初、JSVAL_TO_OBJECT()で得られたオブジェクトを使って、JS_CallFunctionName()でreplace()メソッドを呼び出そうとしていましたが、うまくいきませんでした。
いろいろ試してみたところ、JS_ValueToObject()で得られたオブジェクトを使ってJS_CallFunctionName()を呼び出せばよいようです。
APIリファレンスをよく読むとちゃんと書いてありました。
If v is a boolean value, a number, or a string, the result is a new wrapper object of type Boolean, Number, or String.