Class: Class
- Inherits:
-
Object
- Object
- Class
- Defined in:
- lib/attr_plus/class.rb
Overview
Should add cattr_accessor, which provides accessors for @@ class variables!
Instance Method Summary collapse
-
#class_attr_accessor(*names) ⇒ Object
Executes #class_attr_reader and #class_attr_writer.
-
#class_attr_reader(*args) ⇒ Object
Defines a method that allows you to read an instance variable set at the class level.
-
#class_attr_writer(*args) ⇒ Object
Defines a method for to write to an instance varaible set at the class level.
-
#inheritable_class_attr_accessor(*names) ⇒ Object
Executes #inheritable_class_attr_reader and #inheritable_class_attr_writer.
-
#inheritable_class_attr_reader(*args) ⇒ Object
Creates a class and instance method to read the class level variable(s) with the name(s) provided.
-
#inheritable_class_attr_writer(*args) ⇒ Object
The same as #class_attr_writer.
Instance Method Details
#class_attr_accessor(*names) ⇒ Object
Executes #class_attr_reader and #class_attr_writer.
103 104 105 106 |
# File 'lib/attr_plus/class.rb', line 103 def class_attr_accessor(*names) class_attr_reader(*names) class_attr_writer(*names) end |
#class_attr_reader(*args) ⇒ Object
Defines a method that allows you to read an instance variable set at the class level. Also defines an instance method that reads the same thing. Comparable to #attr_reader for the class level.
So in summary defines:
-
.var (which gets @var) and
-
#var (which gets self.class.var)
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/attr_plus/class.rb', line 35 def class_attr_reader(*args) names, default = separate_arguments_and_set_defaults(args) names.each do |name| class_eval " def self.\#{name}\n @\#{name}\n end\n\n def \#{name}\n @\#{name} ||= self.class.send(:\#{name}).dup\n end\n EOS\n self.instance_variable_set(\"@\#{name}\", (default.dup rescue default))\n end\nend\n" |
#class_attr_writer(*args) ⇒ Object
Defines a method for to write to an instance varaible set at the class level. Comparable to #attr_writer for the class level.
So in summary defines: .var= (which sets @var)
71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/attr_plus/class.rb', line 71 def class_attr_writer(*args) names, default = separate_arguments_and_set_defaults(args) names.each do |name| class_eval " def self.\#{name}=(obj)\n @\#{name} = obj\n end\n \n def \#{name}=(obj)\n @\#{name} = obj\n end\n EOS\n end\nend\n" |
#inheritable_class_attr_accessor(*names) ⇒ Object
Executes #inheritable_class_attr_reader and #inheritable_class_attr_writer.
175 176 177 178 |
# File 'lib/attr_plus/class.rb', line 175 def inheritable_class_attr_accessor(*names) inheritable_class_attr_reader(*names) inheritable_class_attr_writer(*names) end |
#inheritable_class_attr_reader(*args) ⇒ Object
Creates a class and instance method to read the class level variable(s) with the name(s) provided. If no value has been set it attempts to use the value of the superclass.
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/attr_plus/class.rb', line 115 def inheritable_class_attr_reader(*args) names, default = separate_arguments_and_set_defaults(args) names.each do |name| class_eval " def self.\#{name}\n if @\#{name}\n @\#{name}\n elsif superclass.respond_to? :\#{name}\n @\#{name} ||= superclass.\#{name}\n end\n end\n\n def \#{name}\n @\#{name} ||= self.class.send(:\#{name})\n end\n EOS\n self.instance_variable_set(\"@\#{name}\", (default.dup rescue default))\n end\n inheritable_attrs.concat(names).uniq!\nend\n" |
#inheritable_class_attr_writer(*args) ⇒ Object
The same as #class_attr_writer.
137 138 139 |
# File 'lib/attr_plus/class.rb', line 137 def inheritable_class_attr_writer(*args) class_attr_writer(*args) end |