Module: Tapioca::Runtime::Trackers::Mixin
- Extended by:
- T::Sig, Tracker
- Defined in:
- lib/tapioca/runtime/trackers/mixin.rb
Defined Under Namespace
Classes: Type
Class Method Summary collapse
-
.constants_with_mixin(mixin) ⇒ Object
: (Module mixin) -> Hash[Type, Hash[Module, String]].
-
.mixin_location(mixin, mixin_type, constant) ⇒ Object
: (Module mixin, Type mixin_type, Module constant) -> String?.
-
.register(constant, mixin, mixin_type) ⇒ Object
: (Module constant, Module mixin, Type mixin_type) -> void.
- .resolve_to_attached_class(constant, mixin, mixin_type) ⇒ Object
-
.with_disabled_registration(&block) ⇒ Object
: [Result] { -> Result } -> Result.
Methods included from Tracker
disable!, enabled?, extended, with_disabled_tracker
Class Method Details
.constants_with_mixin(mixin) ⇒ Object
: (Module mixin) -> Hash[Type, Hash[Module, String]]
53 54 55 |
# File 'lib/tapioca/runtime/trackers/mixin.rb', line 53 def constants_with_mixin(mixin) find_or_initialize_mixin_lookup(mixin) end |
.mixin_location(mixin, mixin_type, constant) ⇒ Object
: (Module mixin, Type mixin_type, Module constant) -> String?
58 59 60 |
# File 'lib/tapioca/runtime/trackers/mixin.rb', line 58 def mixin_location(mixin, mixin_type, constant) find_or_initialize_mixin_lookup(mixin).dig(mixin_type, constant) end |
.register(constant, mixin, mixin_type) ⇒ Object
: (Module constant, Module mixin, Type mixin_type) -> void
31 32 33 34 35 36 37 38 |
# File 'lib/tapioca/runtime/trackers/mixin.rb', line 31 def register(constant, mixin, mixin_type) return unless enabled? location = Reflection.resolve_loc(caller_locations) return unless location register_with_location(constant, mixin, mixin_type, location.file) end |
.resolve_to_attached_class(constant, mixin, mixin_type) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/tapioca/runtime/trackers/mixin.rb', line 40 def resolve_to_attached_class(constant, mixin, mixin_type) attached_class = Reflection.attached_class_of(constant) return unless attached_class if mixin_type == Type::Include || mixin_type == Type::Prepend location = mixin_location(mixin, mixin_type, constant) register_with_location(constant, mixin, Type::Extend, T.must(location)) end attached_class end |
.with_disabled_registration(&block) ⇒ Object
: [Result] { -> Result } -> Result
26 27 28 |
# File 'lib/tapioca/runtime/trackers/mixin.rb', line 26 def with_disabled_registration(&block) with_disabled_tracker(&block) end |