Module: ALib::ModuleExtensions
- Included in:
- StandardExtensions
- Defined in:
- lib/alib.rb,
lib/alib-0.3.1.rb
Overview
on-demand extensions to standard classes - (incomplete now)
Class Method Summary collapse
Instance Method Summary collapse
- #attributes(*names) ⇒ Object (also: #attribute)
- #class_attributes(*names) ⇒ Object (also: #class_attribute)
- #class_reader_attributes(*names) ⇒ Object (also: #class_reader_attribute)
- #class_writer_attributes(*names) ⇒ Object (also: #class_writer_attribute)
-
#reader_attributes(*names) ⇒ Object
(also: #reader_attribute)
–{{{.
- #writer_attributes(*names) ⇒ Object (also: #writer_attribute)
Class Method Details
.append_features(c) ⇒ Object
3851 3852 3853 3854 3855 |
# File 'lib/alib.rb', line 3851 def self.append_features c #--{{{ Module.extend self #--}}} end |
Instance Method Details
#attributes(*names) ⇒ Object Also known as: attribute
3826 3827 3828 3829 3830 |
# File 'lib/alib.rb', line 3826 def attributes(*names) #--{{{ reader_attributes(*names) + writer_attributes(*names) #--}}} end |
#class_attributes(*names) ⇒ Object Also known as: class_attribute
3844 3845 3846 3847 3848 |
# File 'lib/alib.rb', line 3844 def class_attributes(*names) #--{{{ class << self; self; end.instance_eval{ attributes(*names) } #--}}} end |
#class_reader_attributes(*names) ⇒ Object Also known as: class_reader_attribute
3832 3833 3834 3835 3836 |
# File 'lib/alib.rb', line 3832 def class_reader_attributes(*names) #--{{{ class << self; self; end.instance_eval{ reader_attributes(*names) } #--}}} end |
#class_writer_attributes(*names) ⇒ Object Also known as: class_writer_attribute
3838 3839 3840 3841 3842 |
# File 'lib/alib.rb', line 3838 def class_writer_attributes(*names) #--{{{ class << self; self; end.instance_eval{ writer_attributes(*names) } #--}}} end |
#reader_attributes(*names) ⇒ Object Also known as: reader_attribute
–{{{
3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 |
# File 'lib/alib.rb', line 3737 def reader_attributes(*names) #--{{{ @reader_attributes ||= [] unless names.empty? names.flatten.each do |name| @reader_attributes << "#{ name }" getter = "#{ name }" unless instance_methods.include? getter code = <<-code def #{ name }(*a) unless a.empty? self.#{ name }= a.shift else @#{ name } end end code module_eval code end setter = "#{ name }=" unless instance_methods.include? setter code = <<-code def #{ name }= value @#{ name } = value end private '#{ name }='.intern code module_eval code end query = "#{ name }?" unless instance_methods.include? query code = <<-code alias #{ name }? #{ name } code module_eval code end end end @reader_attributes #--}}} end |
#writer_attributes(*names) ⇒ Object Also known as: writer_attribute
3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 |
# File 'lib/alib.rb', line 3781 def writer_attributes(*names) #--{{{ @writer_attributes ||= [] unless names.empty? names.flatten.each do |name| @writer_attributes << "#{ name }=" getter = "#{ name }" unless instance_methods.include? getter code = <<-code def #{ name }(*a) unless a.empty? self.#{ name }= a.shift else @#{ name } end end private '#{ name }'.intern code module_eval code end setter = "#{ name }=" unless instance_methods.include? setter code = <<-code def #{ name }= value @#{ name } = value end code module_eval code end query = "#{ name }?" unless instance_methods.include? query code = <<-code alias #{ name }? #{ name } private '#{ name }?'.intern code module_eval code end end end @writer_attributes #--}}} end |