All pastes #387801 Raw Edit

Unnamed

public ruby v1 · immutable
·published 2007-03-09 17:26 UTC
rendered paste body
#!/usr/bin/ruby -wclass ToolBox	def initialize(args = {})		@@class_stash ||= {}		args.each_pair { |k, v| register_pair(k, v) }	end	def ToolBox.method_missing(sym, *args)		sym_str = sym.to_s		if sym_str.gsub!(/=\Z/xm, '').nil?			warn 'warning: Class variable @@%s not initialized' % sym unless @@class_stash.has_key?(sym)			return @@class_stash[sym]		else			@@class_stash[sym_str.to_sym] = args			return nil		end	end	def method_missing(sym, *args)		sym_str = sym.to_s		return sym_str.gsub!(/=\Z/xm, '').nil? ? self.instance_variable_get(make_instance_sym(sym)) : register_pair(sym_str, args)	end	private	def make_instance_sym(k)		return ('@%s' % k).to_sym	end	def register_pair(k, v)		self.instance_variable_set(make_instance_sym(k), v)	endendtb = ToolBox.new(:asdf => 'fff')puts tb.asdfputs tb.asdfgtb.asdfg = 'omg'puts tb.asdfgToolBox.test = 'asdf;'puts ToolBox.testputs ToolBox.asdf