xmpfilterを読む
xmpfilter の存在を知ってからずっと不思議で,いつかは読んでやろうと思っていた. 5 年くらい前はあまりのわからなさっぷりに投げだしたのだけど,今なら読めるかもしれないので挑戦してみる.
読めたら ympfilter という形で再実装してみる.
xmpfilter コマンドを実行
$ xmpfilter [ファイル名]
を実行すると bin/xmpfilter が呼ばれる.
bin/xmpfilter
最終的には一番下の行にある
puts klass.run(targetcode, options)
が呼ばれる.
何もオプションを指定しなければ,klass は XMPFilter,targetcode はARGF.read,options は DEFAULT_OPTIONS になる. ARGF.read は「引数をファイル名として扱い,そのファイルを読み込む」なので,
puts XMPFilter.run('コマンド引数で指定したファイルの内容', DEFAULT_OPTIONS)
ということになる.
lib/rcodetools/xmpfilter
XMPFilter.run は lib/rcodetools/xmpfilter.rb の中の self.run で定義されていて
new(opts).annotate(code)
という1行のコードである.
つまり,デフォルトオプションを指定して初期化したのち,
XMPFilter#annotate('引数で指定したファイルの内容')
を実行する.