Class: Module

Inherits:
Object show all
Defined in:
lib/homeschool.rb

Instance Method Summary collapse

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_methodsObject



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