Sha256: 3e54675624989904d934e1c753d209c03de268106e1a1fbfe40bb48f95593180
Contents?: true
Size: 1.62 KB
Versions: 1
Compression:
Stored size: 1.62 KB
Contents
# frozen_string_literal: true module Strict module Method def self.extended(mod) return if mod.singleton_class? mod.singleton_class.extend(self) end def sig(&) instance = singleton_class? ? self : singleton_class instance.instance_variable_set(:@__strict_method_internal_last_sig_configuration, Methods::Dsl.run(&)) end # rubocop:disable Metrics/MethodLength def singleton_method_added(method_name) super sig = singleton_class.instance_variable_get(:@__strict_method_internal_last_sig_configuration) singleton_class.instance_variable_set(:@__strict_method_internal_last_sig_configuration, nil) return unless sig verifiable_method = Methods::VerifiableMethod.new( method: singleton_class.instance_method(method_name), parameters: sig.parameters, returns: sig.returns, instance: false ) verifiable_method.verify_definition! singleton_class.prepend(Methods::Module.new(verifiable_method)) end def method_added(method_name) super sig = singleton_class.instance_variable_get(:@__strict_method_internal_last_sig_configuration) singleton_class.instance_variable_set(:@__strict_method_internal_last_sig_configuration, nil) return unless sig verifiable_method = Methods::VerifiableMethod.new( method: instance_method(method_name), parameters: sig.parameters, returns: sig.returns, instance: true ) verifiable_method.verify_definition! prepend(Methods::Module.new(verifiable_method)) end # rubocop:enable Metrics/MethodLength end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
strict-1.0.0 | lib/strict/method.rb |