Skip to main content

ComponentRegistry

Struct ComponentRegistry 

Source
pub struct ComponentRegistry {
    pub components: HashMap<String, CjsComponent>,
    pub modules: HashMap<String, CjsModule>,
    pub parameters: HashMap<String, (String, Range<usize>)>,
    pub file_sources: HashMap<String, String>,
}
Expand description

Registry of all discovered CJS components and modules.

Populated by register_available_modules (two-phase: collect → merge → process) and then finalised with finalize which resolves inherited parameters.

Primary LSP uses:

  • Completion — iterate components to offer @type values
  • Hover — look up a component by IRI to get comment and parameter list
  • Goto-definitionCjsComponent::iri_span + CjsModule::source_file give the exact location in the components file

Fields§

§components: HashMap<String, CjsComponent>

All components indexed by their fully expanded IRI.

§modules: HashMap<String, CjsModule>

All modules indexed by their fully expanded IRI.

§parameters: HashMap<String, (String, Range<usize>)>

All parameters indexed by their fully expanded IRI, pointing to (source_file, iri_span) for goto-definition without searching every file.

§file_sources: HashMap<String, String>

Raw source text of every component file that was loaded, keyed by the absolute file URL (same strings used in CjsComponent::source_file and CjsModule::source_file). Used by the LSP to convert iri_span byte offsets to LSP line/column positions without re-reading files from disk.

Implementations§

Source§

impl ComponentRegistry

Source

pub fn new() -> Self

Source

pub async fn register_available_modules( &mut self, fs: &dyn Fs, state: &ModuleState, ) -> Result<()>

Discover and register all modules reachable from the module state.

Phase 1 — recursively loads every components.jsonld file (following rdfs:seeAlso imports), parses each with JsonLdVal to harvest @id byte spans, then merges all nodes by IRI into all_nodes.

Phase 2 — walks all_nodes to find oo:Module nodes and extracts their inline component definitions into CjsModule/CjsComponent.

Source

pub fn finalize(&mut self)

Resolve inheritance: walk each component’s extends chain and merge in any parameters not already declared on the component itself.

Must be called after all files have been loaded. Without this step, completion only shows parameters declared directly on a component and misses those inherited from abstract base classes.

Trait Implementations§

Source§

impl Clone for ComponentRegistry

Source§

fn clone(&self) -> ComponentRegistry

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ComponentRegistry

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more