Module: Net::IMAP::Config::AttrAccessors
| Relationships & Source Files | |
| Namespace Children | |
| Modules: | |
| Extension / Inclusion / Inheritance Descendants | |
| Included In: | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
          Forwardable
         | |
| Defined in: | lib/net/imap/config/attr_accessors.rb | 
Overview
NOTE: This module is an internal implementation detail, with no guarantee of backward compatibility.
.attr_accessor values are stored in a struct rather than ivars, making it simpler to ensure that all config objects share a single object shape. This also simplifies iteration over all defined attributes.
Class Method Summary
- .attributes private
- .included(mod) private
- 
    
      .attr_accessor(name)  
    
    Internal use only
    internal API. 
- 
    
      .struct  
    
    Internal use only
    internal API. 
Instance Attribute Summary
- 
    
      #data  
    
    readonly
    protected
    Internal use only
    internal API. 
Instance Method Summary
- 
    
      #freeze  
    
    Freezes the internal attributes struct, in addition to self.
- 
    
      #initialize  
    
    :notnew: 
- #initialize_clone(other) private
- #initialize_dup(other) private
Class Method Details
.attr_accessor(name)
    This method is for internal use only.
  
internal API
# File 'lib/net/imap/config/attr_accessors.rb', line 28
def self.attr_accessor(name) # :nodoc: internal API name = name.to_sym def_delegators :data, name, :"#{name}=" end
.attributes (private)
[ GitHub ]# File 'lib/net/imap/config/attr_accessors.rb', line 33
def self.attributes instance_methods.grep(/=\z/).map { _1.to_s.delete_suffix("=").to_sym } end
.included(mod) (private)
[ GitHub ]# File 'lib/net/imap/config/attr_accessors.rb', line 21
def self.included(mod) mod.extend Macros end
.struct
    This method is for internal use only.
  
internal API
# File 'lib/net/imap/config/attr_accessors.rb', line 38
def self.struct # :nodoc: internal API unless defined?(self::Struct) const_set :Struct, Struct.new(*attributes) end self::Struct end
Instance Attribute Details
#data (readonly, protected)
    This method is for internal use only.
  
internal API
# File 'lib/net/imap/config/attr_accessors.rb', line 58
attr_reader :data # :nodoc: internal API
Instance Method Details
#freeze
Freezes the internal attributes struct, in addition to self.
# File 'lib/net/imap/config/attr_accessors.rb', line 51
def freeze data.freeze super end
#initialize
:notnew:
# File 'lib/net/imap/config/attr_accessors.rb', line 45
def initialize # :notnew: super() @data = AttrAccessors.struct.new end
#initialize_clone(other) (private)
[ GitHub ]# File 'lib/net/imap/config/attr_accessors.rb', line 62
def initialize_clone(other) super @data = other.data.clone end
#initialize_dup(other) (private)
[ GitHub ]# File 'lib/net/imap/config/attr_accessors.rb', line 67
def initialize_dup(other) super @data = other.data.dup end