Skip to main content

shape_runtime/metadata/
mod.rs

1//! Language metadata API for LSP and tooling
2//!
3//! Single source of truth for all Shape language features.
4//! This module provides structured information about keywords, built-in functions,
5//! types, and other language constructs for use by LSP servers, documentation
6//! generators, and other tooling.
7
8// Module declarations
9mod builtin_types;
10mod keywords;
11mod methods;
12mod properties;
13pub mod registry;
14mod types;
15mod unified;
16
17// Re-export all public types
18pub use builtin_types::builtin_types;
19pub use keywords::keywords;
20pub use methods::column_methods;
21pub use properties::simulation_context_properties;
22pub use registry::MetadataRegistry;
23pub use types::{
24    FunctionCategory, FunctionInfo, KeywordInfo, MethodInfo, ParameterInfo, PropertyInfo, TypeInfo,
25};
26pub use unified::{TypeMetadataInfo, UnifiedMetadata};
27
28/// Main metadata provider
29pub struct LanguageMetadata;
30
31impl LanguageMetadata {
32    /// Get all language keywords
33    pub fn keywords() -> Vec<KeywordInfo> {
34        keywords::keywords()
35    }
36
37    /// Get all built-in types
38    pub fn builtin_types() -> Vec<TypeInfo> {
39        builtin_types::builtin_types()
40    }
41
42    /// Get column methods
43    pub fn column_methods() -> Vec<MethodInfo> {
44        methods::column_methods()
45    }
46
47    /// Simulation context properties (available in @simulation functions via `ctx` parameter)
48    pub fn simulation_context_properties() -> Vec<PropertyInfo> {
49        properties::simulation_context_properties()
50    }
51}