アンダースコアだけで 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!