Module: Cattri::Visibility
- Defined in:
- lib/cattri/visibility.rb
Overview
Cattri::Visibility tracks the current method visibility context (public, protected, private)
when defining methods dynamically. It mimics Ruby's native visibility behavior so that
cattri definitions can automatically infer the intended access level based on the current context
in the source file.
This module is intended to be extended by classes that include or extend Cattri.
Instance Method Summary collapse
-
#__cattri_visibility ⇒ Symbol
Returns the currently active visibility scope on the class or module.
-
#private(*args) ⇒ void
Intercepts calls to
privateto update the visibility tracker. -
#protected(*args) ⇒ void
Intercepts calls to
protectedto update the visibility tracker. -
#public(*args) ⇒ void
Intercepts calls to
publicto update the visibility tracker.
Instance Method Details
#__cattri_visibility ⇒ Symbol
Returns the currently active visibility scope on the class or module.
Defaults to :public unless changed explicitly via public, protected, or private.
26 27 28 |
# File 'lib/cattri/visibility.rb', line 26 def __cattri_visibility @__cattri_visibility ||= :public end |
#private(*args) ⇒ void
This method returns an undefined value.
Intercepts calls to private to update the visibility tracker.
If no method names are passed, this sets the current visibility scope for future methods.
Otherwise, delegates to Ruby’s native Module#private.
61 62 63 64 |
# File 'lib/cattri/visibility.rb', line 61 def private(*args) @__cattri_visibility = :private if args.empty? Module.instance_method(:private).bind(self).call(*args) end |
#protected(*args) ⇒ void
This method returns an undefined value.
Intercepts calls to protected to update the visibility tracker.
If no method names are passed, this sets the current visibility scope for future methods.
Otherwise, delegates to Ruby’s native Module#protected.
49 50 51 52 |
# File 'lib/cattri/visibility.rb', line 49 def protected(*args) @__cattri_visibility = :protected if args.empty? Module.instance_method(:protected).bind(self).call(*args) end |
#public(*args) ⇒ void
This method returns an undefined value.
Intercepts calls to public to update the visibility tracker.
If no method names are passed, this sets the current visibility scope for future methods.
Otherwise, delegates to Ruby’s native Module#public.
37 38 39 40 |
# File 'lib/cattri/visibility.rb', line 37 def public(*args) @__cattri_visibility = :public if args.empty? Module.instance_method(:public).bind(self).call(*args) end |