Sha256: 6eec2b24c00c3c295a17f4ab8300339789718c5bb82e9582f1f82051172c9384
Contents?: true
Size: 917 Bytes
Versions: 2
Compression:
Stored size: 917 Bytes
Contents
require "extensible/extension_kernel_template".freeze require "extensible/utils".freeze module Extensible ## # A custom ExtensionKernelTemplate clone that is extended by Extensible to make it, well, extensible. ExtensionKernel = ExtensionKernelTemplate.clone.module_eval do private def extended(submodule) raise_type_error_if_submodule_is_not_a_module(submodule) super unless Utils.own_const_defined?(submodule, :ExtensionKernel) kernel = ExtensionKernelTemplate.clone submodule.const_set(:ExtensionKernel, kernel) submodule.extend kernel end self end def raise_type_error_if_submodule_is_not_a_module(submodule) return if submodule.class == Module raise TypeError, "expected to extend object of type `Module` with module `#{name}`, got `#{submodule.class}` " \ "instead" end self end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
extensible-0.1.3 | lib/extensible/extension_kernel.rb |
extensible-0.1.2 | lib/extensible/extension_kernel.rb |