Class: CachedAccessor::Define
- Inherits:
-
Object
- Object
- CachedAccessor::Define
- Defined in:
- lib/pic2ch/cached_accessor.rb
Instance Method Summary collapse
-
#initialize(klass, &block) ⇒ Define
constructor
A new instance of Define.
- #method_missing(symbol, &block) ⇒ Object
Constructor Details
#initialize(klass, &block) ⇒ Define
Returns a new instance of Define.
16 17 18 19 |
# File 'lib/pic2ch/cached_accessor.rb', line 16 def initialize(klass, &block) @klass = klass instance_eval(&block) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(symbol, &block) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/pic2ch/cached_accessor.rb', line 21 def method_missing(symbol, &block) cached = "__cached__#{symbol}" @klass.send(:define_method, cached, &block) @klass.class_eval("def #{symbol} ;@#{symbol} ||= #{cached}; end", "(__CACHED_ACCESSOR__)", 1) @klass.class_eval("def #{symbol}!;@#{symbol} = #{cached}; end", "(__CACHED_ACCESSOR__)", 2) unless /\?|!/ === symbol.to_s end |