diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2009-03-24 19:45:35 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2009-03-24 19:45:35 -0700 |
commit | a27ee86c38da84a7b71bd04efc1643a3b526e1d2 (patch) | |
tree | 1972d5c44ee485ff393cb91fa7ce5cafa18c129e /activesupport | |
parent | 3f7130aed842bd077acb5bacab8f99a83ea0480b (diff) | |
download | rails-a27ee86c38da84a7b71bd04efc1643a3b526e1d2.tar.gz rails-a27ee86c38da84a7b71bd04efc1643a3b526e1d2.tar.bz2 rails-a27ee86c38da84a7b71bd04efc1643a3b526e1d2.zip |
Explicit dependency on Array#extract_options!
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/lib/active_support/core_ext/module/attribute_accessors.rb | 52 |
1 files changed, 28 insertions, 24 deletions
diff --git a/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb b/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb index 9402cb8534..62bc64d137 100644 --- a/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +++ b/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb @@ -1,35 +1,25 @@ -# Extends the module object with module and instance accessors for class attributes, -# just like the native attr* accessors for instance attributes. -# -# module AppConfiguration -# mattr_accessor :google_api_key -# self.google_api_key = "123456789" -# -# mattr_accessor :paypal_url -# self.paypal_url = "www.sandbox.paypal.com" -# end -# -# AppConfiguration.google_api_key = "overriding the api key!" +require 'active_support/core_ext/array/extract_options' + class Module def mattr_reader(*syms) + syms.extract_options! syms.each do |sym| - next if sym.is_a?(Hash) class_eval(<<-EOS, __FILE__, __LINE__) unless defined? @@#{sym} # unless defined? @@pagination_options @@#{sym} = nil # @@pagination_options = nil end # end - # + def self.#{sym} # def self.pagination_options @@#{sym} # @@pagination_options end # end - # + def #{sym} # def pagination_options @@#{sym} # @@pagination_options end # end EOS end end - + def mattr_writer(*syms) options = syms.extract_options! syms.each do |sym| @@ -37,20 +27,34 @@ class Module unless defined? @@#{sym} # unless defined? @@pagination_options @@#{sym} = nil # @@pagination_options = nil end # end - # + def self.#{sym}=(obj) # def self.pagination_options=(obj) @@#{sym} = obj # @@pagination_options = obj end # end - # - #{" # - def #{sym}=(obj) # def pagination_options=(obj) - @@#{sym} = obj # @@pagination_options = obj - end # end - " unless options[:instance_writer] == false } # # instance writer above is generated unless options[:instance_writer] == false EOS + + unless options[:instance_writer] == false + class_eval(<<-EOS, __FILE__, __LINE__) + def #{sym}=(obj) # def pagination_options=(obj) + @@#{sym} = obj # @@pagination_options = obj + end # end + EOS + end end end - + + # Extends the module object with module and instance accessors for class attributes, + # just like the native attr* accessors for instance attributes. + # + # module AppConfiguration + # mattr_accessor :google_api_key + # self.google_api_key = "123456789" + # + # mattr_accessor :paypal_url + # self.paypal_url = "www.sandbox.paypal.com" + # end + # + # AppConfiguration.google_api_key = "overriding the api key!" def mattr_accessor(*syms) mattr_reader(*syms) mattr_writer(*syms) |