Class: Module
Instance Method Summary collapse
- #add_extension(extension) ⇒ Object
- #append_features_with_pattern_methods(target) ⇒ Object (also: #append_features)
- #attr_with_default(name, default = nil, &block) ⇒ Object
- #pattern_methods ⇒ Object
- #rdef(pattern, &block) ⇒ Object
Instance Method Details
#add_extension(extension) ⇒ Object
88 89 90 91 |
# File 'lib/homeschool.rb', line 88 def add_extension(extension) self.extend extension::ClassMethods unless !defined?(extension::ClassMethods) self.send(:include, extension::InstanceMethods) unless !defined?(extension::InstanceMethods) end |
#append_features_with_pattern_methods(target) ⇒ Object Also known as: append_features
81 82 83 84 |
# File 'lib/homeschool.rb', line 81 def append_features_with_pattern_methods(target) append_features_without_pattern_methods(target) target.pattern_methods.push(*pattern_methods) if (@pattern_methods) end |
#attr_with_default(name, default = nil, &block) ⇒ Object
65 66 67 68 69 70 71 72 73 |
# File 'lib/homeschool.rb', line 65 def attr_with_default(name, default=nil, &block) attr_writer name define_method(name) do once(name, :set_default) do instance_variable_set(name.iv, block_given? ? block.call : default.dup) unless instance_variable_get(name.iv) end instance_variable_get(name.iv) end end |
#pattern_methods ⇒ Object
75 76 77 |
# File 'lib/homeschool.rb', line 75 def pattern_methods @pattern_methods ||= [] end |
#rdef(pattern, &block) ⇒ Object
78 79 80 |
# File 'lib/homeschool.rb', line 78 def rdef(pattern, &block) pattern_methods << [/^#{pattern.source}$/, block] end |