2008年 07月 12日

Re: ゆの in Ruby

「おまえのコードつまんねーんだよ!!11」ってゆわれた気がしたのでバリエーションつくってみました><

# *_missing
class Object
	def self.const_missing(n)n end
	def method_missing(n, *a)
		print (n == :<) ? a : ({
			[:_, $!] => "ひだまり",
			[:/, :_] => "スケッチ",
			[:/, :X] => "×365"
		}[[n, a[0]]] || " ")
		n
	end
end


X / _ / X < 来週も見てくださいね!
# 上のと同じのをちょっとゴルフぽく。(むずい)
class X;end
class Object
def method_missing(n,*a)print n==:<?a:({[:_,$!]=>:ひだまり,[:/,:_]=>:スケッチ,[:/,X]=>:×365}[[n,a[0]]]||" ");n end
end

X / _ / X < 来週も見てくださいね!
# ひたすらエラーハンドリング

begin

X / _ / X < 来週も見てくださいね!

rescue NoMethodError => e
	case e.message[/`(.+)'/, 1]
	when "/"
		print "×"
		Object.__send__(:define_method, :/) {|
			x| _ |x
		}
		Object.__send__(:public, :/)
		retry
	when "|"
		print "365 "
		Regexp.__send__(:define_method, :|) {
			(/ _ /x)
		}
		retry
	else
		puts Regexp.last_match[1]
	end
rescue NameError => e
	case e.message
	when /constant X/
		Kernel.const_set(:X, :X)
		print "ひだまり"
		retry
	when /variable or method `_'/
		Kernel.__send__(:define_method, :_) { (/ _ /x) }
		print "スケッチ"
		retry
	end
end

とてもねむい