mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
r3216@asus: jeremy | 2005-11-20 03:05:20 -0800
simplify cattr_ and mattr_accessor git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3128 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
a821c3dd93
commit
3148216cbb
2 changed files with 29 additions and 55 deletions
|
@ -2,48 +2,35 @@
|
|||
# just like the native attr* accessors for instance attributes.
|
||||
class Class # :nodoc:
|
||||
def cattr_reader(*syms)
|
||||
syms.select { |sym| sym.respond_to?(:id2name) }.each do |sym|
|
||||
class_eval <<-EOS
|
||||
if ! defined? @@#{sym.id2name}
|
||||
@@#{sym.id2name} = nil
|
||||
syms.flatten.each do |sym|
|
||||
class_eval(<<-EOS, __FILE__, __LINE__)
|
||||
unless defined? @@#{sym}
|
||||
@@#{sym} = nil
|
||||
end
|
||||
|
||||
def self.#{sym.id2name}
|
||||
def self.#{sym}
|
||||
@@#{sym}
|
||||
end
|
||||
|
||||
def #{sym.id2name}
|
||||
def #{sym}
|
||||
@@#{sym}
|
||||
end
|
||||
|
||||
def call_#{sym.id2name}
|
||||
case @@#{sym.id2name}
|
||||
when Symbol then send(@@#{sym})
|
||||
when Proc then @@#{sym}.call(self)
|
||||
when String then @@#{sym}
|
||||
else nil
|
||||
end
|
||||
end
|
||||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
def cattr_writer(*syms)
|
||||
syms.select { |sym| sym.respond_to?(:id2name) }.each do |sym|
|
||||
class_eval <<-EOS
|
||||
if ! defined? @@#{sym.id2name}
|
||||
@@#{sym.id2name} = nil
|
||||
syms.flatten.each do |sym|
|
||||
class_eval(<<-EOS, __FILE__, __LINE__)
|
||||
unless defined? @@#{sym}
|
||||
@@#{sym} = nil
|
||||
end
|
||||
|
||||
def self.#{sym.id2name}=(obj)
|
||||
@@#{sym.id2name} = obj
|
||||
def self.#{sym}=(obj)
|
||||
@@#{sym} = obj
|
||||
end
|
||||
|
||||
def self.set_#{sym.id2name}(obj)
|
||||
@@#{sym.id2name} = obj
|
||||
end
|
||||
|
||||
def #{sym.id2name}=(obj)
|
||||
def #{sym}=(obj)
|
||||
@@#{sym} = obj
|
||||
end
|
||||
EOS
|
||||
|
|
|
@ -3,47 +3,34 @@
|
|||
class Module # :nodoc:
|
||||
def mattr_reader(*syms)
|
||||
syms.each do |sym|
|
||||
class_eval <<-EOS
|
||||
if ! defined? @@#{sym.id2name}
|
||||
@@#{sym.id2name} = nil
|
||||
class_eval(<<-EOS, __FILE__, __LINE__)
|
||||
unless defined? @@#{sym}
|
||||
@@#{sym} = nil
|
||||
end
|
||||
|
||||
def self.#{sym.id2name}
|
||||
def self.#{sym}
|
||||
@@#{sym}
|
||||
end
|
||||
|
||||
def #{sym.id2name}
|
||||
def #{sym}
|
||||
@@#{sym}
|
||||
end
|
||||
|
||||
def call_#{sym.id2name}
|
||||
case @@#{sym.id2name}
|
||||
when Symbol then send(@@#{sym})
|
||||
when Proc then @@#{sym}.call(self)
|
||||
when String then @@#{sym}
|
||||
else nil
|
||||
end
|
||||
end
|
||||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
def mattr_writer(*syms)
|
||||
syms.each do |sym|
|
||||
class_eval <<-EOS
|
||||
if ! defined? @@#{sym.id2name}
|
||||
@@#{sym.id2name} = nil
|
||||
class_eval(<<-EOS, __FILE__, __LINE__)
|
||||
unless defined? @@#{sym}
|
||||
@@#{sym} = nil
|
||||
end
|
||||
|
||||
def self.#{sym.id2name}=(obj)
|
||||
@@#{sym.id2name} = obj
|
||||
def self.#{sym}=(obj)
|
||||
@@#{sym} = obj
|
||||
end
|
||||
|
||||
def self.set_#{sym.id2name}(obj)
|
||||
@@#{sym.id2name} = obj
|
||||
end
|
||||
|
||||
def #{sym.id2name}=(obj)
|
||||
def #{sym}=(obj)
|
||||
@@#{sym} = obj
|
||||
end
|
||||
EOS
|
||||
|
|
Loading…
Reference in a new issue