-いい感じ
http://d.hatena.ne.jp/ashigeru/20060215
トラバが来たので読む。アノテーションを使うやり方でなく、謎言語の枠内で解決していてスマート。問題は謎言語をどこに書くか。順当なら外部テキストファイルかな。このぐらいのものなら、Eclipseでエディタを作るのもちょろい。
class c1 name ClassTmpl declares template() as m1 class c2 name Mixin declares setMember(java.lang.String) as m2 apply procs.TemplateProcessor.process(c1, m1, m2) apply procs.TemplateLogger.log(environment, c1, m1, c2, m2)
これが"sample.bind"だとして、コンパイラに食わす。>irenka -bind sample *.java
package procs; public class TemplateProcessor { public void process(ASTClass c, ASTMethod m1, ASTMethod m2) { c.delete(m1); c.replaceName("Hoge"); m2.replaceName("setProperty"); c.add(m2); c.deploy(); } }
こっちはこのぐらい直感的にシンプルになるといいな。