Class: Panda::Core::ModuleRegistry
- Inherits:
-
Object
- Object
- Panda::Core::ModuleRegistry
- Defined in:
- lib/panda/core/module_registry.rb
Overview
Module registry for Panda ecosystem components
This class maintains a registry of all Panda modules (CMS, CMS Pro, Community, etc.) and their asset paths. Each module self-registers during engine initialization.
Benefits:
- Core doesn't need hardcoded knowledge of other modules
- Supports private modules (e.g., panda-community in development)
- Single source of truth for asset compilation
- Scales automatically to future modules
Usage:
# In module's engine.rb (after class definition):
Panda::Core::ModuleRegistry.register(
gem_name: 'panda-cms',
engine: 'Panda::CMS::Engine',
paths: {
views: 'app/views/panda/cms/**/*.erb',
components: 'app/components/panda/cms/**/*.rb',
stylesheets: 'app/assets/stylesheets/panda/cms/**/*.css'
}
)
Defined Under Namespace
Classes: JavaScriptMiddleware
Class Attribute Summary collapse
-
.modules ⇒ Hash
readonly
Returns all registered modules.
Class Method Summary collapse
-
.combined_importmap ⇒ Hash
Returns a combined importmap for all registered modules.
-
.javascript_sources ⇒ Array<String>
Returns JavaScript source files by introspecting importmaps.
-
.register(gem_name:, engine:, paths:) ⇒ Object
Register a Panda module with its asset paths.
-
.registered?(gem_name) ⇒ Boolean
Check if a specific module is registered.
-
.registered_modules ⇒ Array<String>
Returns registered module names.
-
.tailwind_content_paths ⇒ Array<String>
Returns content paths for Tailwind CSS scanning.
Class Attribute Details
.modules ⇒ Hash (readonly)
Returns all registered modules
50 51 52 |
# File 'lib/panda/core/module_registry.rb', line 50 def modules @modules end |
Class Method Details
.combined_importmap ⇒ Hash
Returns a combined importmap for all registered modules
This merges importmaps from Core and all registered modules (CMS, CMS Pro, etc.) into a single hash suitable for