Module: Tapioca::Runtime::Trackers::Mixin
- Extended by:
- Tracker
- Defined in:
- lib/tapioca/runtime/trackers/mixin.rb
Defined Under Namespace
Classes: Type
Class Method Summary
collapse
-
.constants_with_mixin(mixin) ⇒ Object
-
.mixin_location(mixin, mixin_type, constant) ⇒ Object
: (T::Module mixin, Type mixin_type, T::Module constant) -> String?.
-
.register(constant, mixin, mixin_type) ⇒ Object
: (T::Module constant, T::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
50
51
52
|
# File 'lib/tapioca/runtime/trackers/mixin.rb', line 50
def constants_with_mixin(mixin)
find_or_initialize_mixin_lookup(mixin)
end
|
.mixin_location(mixin, mixin_type, constant) ⇒ Object
: (T::Module mixin, Type mixin_type, T::Module constant) -> String?
55
56
57
|
# File 'lib/tapioca/runtime/trackers/mixin.rb', line 55
def mixin_location(mixin, mixin_type, constant)
find_or_initialize_mixin_lookup(mixin).dig(mixin_type, constant)
end
|
.register(constant, mixin, mixin_type) ⇒ Object
: (T::Module constant, T::Module mixin, Type mixin_type) -> void
28
29
30
31
32
33
34
35
|
# File 'lib/tapioca/runtime/trackers/mixin.rb', line 28
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
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/tapioca/runtime/trackers/mixin.rb', line 37
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
23
24
25
|
# File 'lib/tapioca/runtime/trackers/mixin.rb', line 23
def with_disabled_registration(&block)
with_disabled_tracker(&block)
end
|