Sha256: 62ebaa894fd7cc4a638945d3ba4ab84d5d35888d0b074e8598dfc8bb110cb187
Contents?: true
Size: 778 Bytes
Versions: 2
Compression:
Stored size: 778 Bytes
Contents
module Contracts module Eigenclass def self.extended(eigenclass) return if eigenclass.respond_to?(:owner_class=) class << eigenclass attr_accessor :owner_class end end def self.lift(base) return NullEigenclass if Support.eigenclass? base eigenclass = Support.eigenclass_of base eigenclass.extend(Eigenclass) unless eigenclass.respond_to?(:owner_class=) unless eigenclass.respond_to?(:pop_decorators) eigenclass.extend(MethodDecorators) eigenclass.send(:include, Contracts) end eigenclass.owner_class = base eigenclass end module NullEigenclass def self.owner_class self end def self.pop_decorators [] end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
contracts-0.9 | lib/contracts/eigenclass.rb |
contracts-0.8 | lib/contracts/eigenclass.rb |