lib/strict/method.rb in strict-1.0.0 vs lib/strict/method.rb in strict-1.1.0
- old
+ new
@@ -11,10 +11,28 @@
def sig(&)
instance = singleton_class? ? self : singleton_class
instance.instance_variable_set(:@__strict_method_internal_last_sig_configuration, Methods::Dsl.run(&))
end
+ def strict_class_methods
+ instance = singleton_class? ? self : singleton_class
+ if instance.instance_variable_defined?(:@__strict_method_internal_class_methods)
+ instance.instance_variable_get(:@__strict_method_internal_class_methods)
+ else
+ instance.instance_variable_set(:@__strict_method_internal_class_methods, {})
+ end
+ end
+
+ def strict_instance_methods
+ instance = singleton_class? ? self : singleton_class
+ if instance.instance_variable_defined?(:@__strict_method_internal_instance_methods)
+ instance.instance_variable_get(:@__strict_method_internal_instance_methods)
+ else
+ instance.instance_variable_set(:@__strict_method_internal_instance_methods, {})
+ end
+ end
+
# rubocop:disable Metrics/MethodLength
def singleton_method_added(method_name)
super
sig = singleton_class.instance_variable_get(:@__strict_method_internal_last_sig_configuration)
@@ -26,10 +44,11 @@
parameters: sig.parameters,
returns: sig.returns,
instance: false
)
verifiable_method.verify_definition!
+ strict_class_methods[method_name] = verifiable_method
singleton_class.prepend(Methods::Module.new(verifiable_method))
end
def method_added(method_name)
super
@@ -43,9 +62,10 @@
parameters: sig.parameters,
returns: sig.returns,
instance: true
)
verifiable_method.verify_definition!
+ strict_instance_methods[method_name] = verifiable_method
prepend(Methods::Module.new(verifiable_method))
end
# rubocop:enable Metrics/MethodLength
end
end