# Based on an original idea by Aslak Hellesoy. require 'glue/hash' class Module def ann(anns) @@anns ||= SafeHash.new def self.method_missing(sym, *args) #:nodoc: @@anns[sym] end t = Thread.current t[:attr_anns] ||= {} t[:attr_anns].merge!(anns) end alias old_attr_reader attr_reader #:nodoc: def attr_reader(*syms) #:nodoc: t = Thread.current syms.each do |sym| @@anns[sym] = t[:attr_anns] end t[:attr_anns] = nil old_attr_reader(*syms) end def attr_accessor(*syms) #:nodoc: attr_reader(*syms) attr_writer(*syms) end end # * George Moschovitis