Module: Pakyow::Support::Extension

Defined in:
lib/pakyow/support/extension.rb

Overview

Makes it easier to define extensions.

Examples:


module SomeExtension
  extend Pakyow::Support::Extension

  # only allows the extension to be used on descendants of `SomeBaseClass`
  restrict_extension SomeBaseClass

  apply_extension do
    # anything here is evaluated on the object including the extension
  end

  class_methods do
    # class methods can be defined here
  end

  prepend_methods do
    # instance methods you wish to prepend can be defined here
  end

  # define instance-level methods as usual
end

class SomeClass < SomeBaseClass
  include SomeExtension
end

Instance Method Summary collapse

Instance Method Details

#apply_extension(&block) ⇒ Object



39
40
41
# File 'lib/pakyow/support/extension.rb', line 39

def apply_extension(&block)
  @__extension_block = block
end

#class_methods(&block) ⇒ Object



43
44
45
# File 'lib/pakyow/support/extension.rb', line 43

def class_methods(&block)
  @__extension_extend_module = Module.new(&block)
end

#included(base) ⇒ Object



51
52
53
54
55
# File 'lib/pakyow/support/extension.rb', line 51

def included(base)
  enforce_restrictions(base)
  mixin_extension_modules(base)
  include_extensions(base)
end

#prepend_methods(&block) ⇒ Object



47
48
49
# File 'lib/pakyow/support/extension.rb', line 47

def prepend_methods(&block)
  @__extension_prepend_module = Module.new(&block)
end

#restrict_extension(type) ⇒ Object



35
36
37
# File 'lib/pakyow/support/extension.rb', line 35

def restrict_extension(type)
  @__extension_restriction = type
end