Class: Module
- Inherits:
-
Object
- Object
- Module
- Defined in:
- lib/laissez.rb
Instance Method Summary collapse
Instance Method Details
#lazy_accessor(*syms, &blk) ⇒ Object
31 32 33 34 |
# File 'lib/laissez.rb', line 31 def lazy_accessor(*syms, &blk) lazy_reader(*syms, &blk) lazy_writer(*syms, &blk) end |
#lazy_reader(*syms) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/laissez.rb', line 4 def lazy_reader(*syms) syms.map(&:to_s).each do |sym| raise NameError.new("invalid attribute name: #{sym}") unless sym =~ /^[_A-Za-z]\w*$/ class_eval(" def \#{sym}(&block)\n return self.\#{sym}=(block) if block_given?\n \#{sym} = @\#{sym}\n \#{sym} = \#{sym}.call if \#{sym}.is_a? Proc\n \#{sym}\n end\n EOS\n end\nend\n", __FILE__, __LINE__ + 1) |
#lazy_writer(*syms) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/laissez.rb', line 18 def lazy_writer(*syms) syms.map(&:to_s).each do |sym| raise NameError.new("invalid attribute name: #{sym}") unless sym =~ /^[_A-Za-z]\w*$/ class_eval(" @\#{sym} = nil unless defined? @\#{sym}\n\n def \#{sym}=(obj)\n @\#{sym} = obj\n end\n EOS\n end\nend\n", __FILE__, __LINE__ + 1) |