Class: Tapioca::Dsl::Compilers::PhlexKit
- Inherits:
-
Compiler
- Object
- Compiler
- Tapioca::Dsl::Compilers::PhlexKit
- Extended by:
- T::Generic, T::Sig
- Defined in:
- lib/tapioca/dsl/compilers/phlex_kit.rb
Overview
Generates RBI files for Phlex::Kit modules.
When a module ‘extend Phlex::Kit`, Phlex installs an instance method and a singleton method for every component constant added under that module (see `Phlex::Kit#const_added`). Those methods render the component and are invoked from inside other components like `Card { … }` or `Button(label: “Save”)`.
Sorbet only sees ‘Phlex::Kit#method_missing` and reports such calls as unknown methods. This compiler emits a typed RBI entry for each registered component so call sites type-check.
Constant Summary collapse
- ConstantType =
type_member { { fixed: T::Module[T.anything] } }
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.gather_constants ⇒ Object
36 37 38 39 40 |
# File 'lib/tapioca/dsl/compilers/phlex_kit.rb', line 36 def self.gather_constants all_modules.select do |m| !m.is_a?(Class) && m.singleton_class < ::Phlex::Kit end end |
Instance Method Details
#decorate ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/tapioca/dsl/compilers/phlex_kit.rb', line 27 def decorate components = component_constants return if components.empty? generate_kit_methods(components) generate_component_includes(components) end |