class Tapioca::Dsl::Compilers::MixedInClassAttributes
~~~
end
end
def tag?; end
def tag=(value); end
def tag; end
module GeneratedInstanceMethods
end
def tag?; end
def tag=(value); end
def tag; end
module GeneratedClassMethods
mixes_in_class_methods GeneratedClassMethods
include GeneratedInstanceMethods
module Taggeable
# typed: strong
~~~rbi
this compiler will produce the RBI file ‘taggeable.rbi` with the following content:
~~~
end
end
class_attribute :tag
included do
extend ActiveSupport::Concern
module Taggeable
~~~rb
For example, given the following concern
`class_attribute` on classes.
`Tapioca::Dsl::Compilers::MixedInClassAttributes` generates RBI files for modules that dynamically use
def decorate
def decorate mixin_compiler = Runtime::DynamicMixinCompiler.new(constant) return if mixin_compiler.empty_attributes? root.create_path(constant) do |mod| mixin_compiler.compile_class_attributes(mod) end end
def gather_constants
def gather_constants # Select all non-anonymous modules that have overridden Module.included all_modules.select do |mod| !mod.is_a?(Class) && name_of(mod) && Runtime::Reflection.method_of(mod, :included).owner != Module end end