Sha256: 9f14c673717798f7106947adf3c6ef807f1690114d86190ea2ed3f46aa863f88

Contents?: true

Size: 647 Bytes

Versions: 4

Compression:

Stored size: 647 Bytes

Contents

# 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 <gm@navel.gr>

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
glue-0.20.0 lib/glue/annotation.rb
glue-0.21.0 lib/glue/annotation.rb
glue-0.22.0 lib/glue/annotation.rb
glue-0.21.2 lib/glue/annotation.rb