setModelDeclaration("model(parentModel)") を実行すると。
class Port(model)(true): と出力されます。
期待する出力は、
class Port(model): となります。
定義した関数
function setModelDeclaration(sheetName){
sheetName=String(sheetName);
parentModelName=/(.*)/.test(sheetName);
var modelName="";
if(parentModelName.length!=0){
modelName = sheetName.slice(0,sheetName.indexOf("("));
modelDeclaration = "class "+sheetName+"("+parentModelName+"):";
}else{
modelName = sheetName;
modelDeclaration = "class "+modelName+"(models.Model):";
}
return modelDeclaration;
}
こんな感じのことをやりたいのでしょうか?
function setModelDeclaration(sheetName) { sheetName = String(sheetName); // RegExp.test() の戻り値は true / false // parentModelName = /(.*)/.test(sheetName); var parentModelName; var re = /\((.*)\)/; // () の内側を切り出す正規表現 var result; if ((result = re.exec(sheetName)) != null) { parentModelName = result[1]; } if(parentModelName){ modelName = sheetName.slice(0,sheetName.indexOf("(")); // ***** sheet じゃなくて model ? // modelDeclaration = "class "+sheetName+"("+parentModelName+"):"; modelDeclaration = "class "+modelName+"("+parentModelName+"):"; } else { ... } return modelDeclaration; }
元のコードになるべく残して、書き換えたところは、元のコードを残してあります。
ポイントは、こんなところかと。
メソッドの引数や戻り値の意味は、ドキュメントを引くようにした方が良いです。
ご回答いただき、誠にありがとうございます。
2014/06/09 16:28:43ドキュメントの引き方まで教えていただき、幸甚でございます。
JavaScript 自体、まだ触りだしたばかりなので、大変苦慮しておりました。
ご教示いただき、ありがとうございます。