メソッド名一覧の表示
Posted feedbacks - awk
指定された *.awk ファイルをサーチして、 test_XXX という関数をすべて実行するような .awk ファイルを作り、 その .awk ファイルを実行します。 対象にするのは、 ^function +test_.* というパターンにマッチする関数定義だけです。 ex) > gawk -f testrunner.awk *.awk test_XXX をすべて呼び出すために、_tmp_runner.awk というファイルを 生成します。このファイルは削除せず残します。 _tmp_runner.awk と同時に、test_XXX が含まれていた .awk ファイルをすべて、 読み込みます。それ以外の .awk ファイルは読みません。 このあたりの仕様は、実用性を考えると検討したほうがいいかも。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | BEGIN {
TMPFILE = "_tmp_runner.awk"
awk_cmd = ARGV[0]
targets = " "
print "BEGIN {" > TMPFILE
}
/^function +test_.*\(/ {
fname = gensub(/^function +(test_[^(]*)\(.*$/, "\\1", "")
printf "\t%s()\n", fname >> TMPFILE
if(index(targets, " -f " FILENAME " ") == 0) {
targets = targets "-f " FILENAME " "
}
}
END {
print "}" >> TMPFILE
close(TMPFILE)
CMD = sprintf("%s -f%s %s", awk_cmd, TMPFILE, targets)
system(CMD)
}
|


にしお
#3388()
Rating1/1=1.00
「ある与えられたオブジェクトtargetのメソッドのうち、 "test_"で始まるものをすべて呼びだす」というコードを書いてください。 引数に関しては都合のいいように仮定して構いません(全部0個、など)。
メソッドという概念がない言語の場合は、 「複数の関数への参照を持っているようなオブジェクト(たとえばパッケージとかモジュールとか)から"test_"で始まる関数をすべて呼び出す」と読み替えても構いません。
[ reply ]