public
Description: PLEASE CHECK http://github.com/lifo/docrails/wikis
Homepage: http://weblog.rubyonrails.org/2008/5/2/help-improve-rails-documentation-on-git-branch
Clone URL: git://github.com/lifo/docrails.git
Search Repo:
fxn (author)
Mon May 12 09:37:37 -0700 2008
commit  9d0900c7dffcd95339ace815192d4778cd04dc09
tree    d6ddf689ab66cada3f6d0bf5458a34f5389f0563
parent  130a280ddee1f96ccf378b52c17ee742b5e54f4a
docrails / activesupport / lib / active_support / core_ext / module / attr_internal.rb
100644 33 lines (27 sloc) 0.934 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Module
  # Declares an attribute reader backed by an internally-named instance variable.
  def attr_internal_reader(*attrs)
    attrs.each do |attr|
      module_eval "def #{attr}() #{attr_internal_ivar_name(attr)} end"
    end
  end
 
  # Declares an attribute writer backed by an internally-named instance variable.
  def attr_internal_writer(*attrs)
    attrs.each do |attr|
      module_eval "def #{attr}=(v) #{attr_internal_ivar_name(attr)} = v end"
    end
  end
 
  # Declares an attribute reader and writer backed by an internally-named instance
  # variable.
  def attr_internal_accessor(*attrs)
    attr_internal_reader(*attrs)
    attr_internal_writer(*attrs)
  end
 
  alias_method :attr_internal, :attr_internal_accessor
 
  private
    mattr_accessor :attr_internal_naming_format
    self.attr_internal_naming_format = '@_%s'
 
    def attr_internal_ivar_name(attr)
      attr_internal_naming_format % attr
    end
end