Advertisement
Guest User

Untitled

a guest
Sep 27th, 2013
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rails 0.77 KB | None | 0 0
  1. class Creature
  2.     def self.metaclass
  3.         class << self; self; end
  4.     end
  5.  
  6.     def self.traits(*arr)
  7.         return @traits if arr.empty?
  8.         attr_accessor(*arr)
  9.  
  10.         arr.each do |a|
  11.             metaclass.instance_eval {
  12.                 define_method(a) do |val|
  13.                   @traits ||= {}
  14.                   @traits[a] = val
  15.                 end
  16.  
  17.                 define_method(a) do
  18.                     @traits[a]
  19.                 end
  20.             }
  21.         end
  22.  
  23.         class_eval do
  24.             define_method( :initialize ) do
  25.                 self.class.traits.each do |k,v|
  26.                     instance_variable_set("@#{k}", v)
  27.                 end
  28.             end
  29.         end
  30.     end
  31.  
  32.  
  33.     traits :life, :strength, :charisma, :weapon
  34. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement