アンダースコアだけで Ruby プログラムを書く2

requireされたときに以降のコードを好きなように解釈して勝手に終了するの、よく考えたらネタプログラミング用に汎用性が高いことに気がついたので超絶技巧の人の「アンダースコアだけで Ruby プログラムを書くライブラリ _ - まめめも」をその方式でやってみた。

# _2.rb
file, line, method = if /^(.+?):(\d+)(?::in `(.*)')?/ =~ caller(1).first
  [$1, $2.to_i, $3]
end

if method == 'require'
  lines = File.open(file) {|f| f.readlines}
  eval lines[line..-1].join(' ').split(' ').map{|e| 
    e.size-1}.join.scan(/.../).map{|e| e.to_i(6) }.pack("C*")
  exit
end


サンプルコードもまめめもからのパクリ。

# test_2.rb
require "_2"
____ _ _____ ____ __ ____ ____ __ ___ ____ __ __ _ ______
_____ ___ _ _ ___ _____ ______ ____ _ _ ____ _ _ ____ _
____ __ __ ___ _ ______ ___ ____ __ ______ ____ _ ____ ____
__ _ ____ _ _ ___ _____ _____ _ ______ ____ _ ______ _____


ん、動いた。

$ ruby test_2.rb
Hello, world!