module Yogo module ExtensionModule def extended(base) case(base) when Class, Module base.class_eval(&class_extensions) else base.instance_eval(&instance_extensions) end end def included(base) extended(base) end def instance_extensions(&block) @_instance_extensions ||= lambda {} if block_given? @_instance_extensions = block end @_instance_extensions end def class_extensions(&block) @_class_extensions ||= lambda {} if block_given? @_class_extensions = block end @_class_extensions end end # ExtensionModule end # Yogo