pub struct StateWorkingSet<'a> {
pub permanent_state: &'a EngineState,
pub delta: StateDelta,
pub files: FileStack,
pub search_predecls: bool,
pub parse_errors: Vec<ParseError>,
pub parse_warnings: Vec<ParseWarning>,
pub compile_errors: Vec<CompileError>,
}
Expand description
A temporary extension to the global state. This handles bridging between the global state and the additional declarations and scope changes that are not yet part of the global scope.
This working set is created by the parser as a way of handling declarations and scope changes that may later be merged or dropped (and not merged) depending on the needs of the code calling the parser.
Fields§
§permanent_state: &'a EngineState
§delta: StateDelta
§files: FileStack
§search_predecls: bool
Whether or not predeclarations are searched when looking up a command (used with aliases)
parse_errors: Vec<ParseError>
§parse_warnings: Vec<ParseWarning>
§compile_errors: Vec<CompileError>
Implementations§
Source§impl<'a> StateWorkingSet<'a>
impl<'a> StateWorkingSet<'a>
pub fn new(permanent_state: &'a EngineState) -> StateWorkingSet<'a>
pub fn permanent(&self) -> &EngineState
pub fn error(&mut self, parse_error: ParseError)
pub fn warning(&mut self, parse_warning: ParseWarning)
pub fn num_files(&self) -> usize
pub fn num_virtual_paths(&self) -> usize
pub fn num_decls(&self) -> usize
pub fn num_blocks(&self) -> usize
pub fn num_modules(&self) -> usize
pub fn unique_overlay_names(&self) -> HashSet<&[u8]>
pub fn num_overlays(&self) -> usize
pub fn add_decl(&mut self, decl: Box<dyn Command>) -> Id<Decl>
pub fn use_decls(&mut self, decls: Vec<(Vec<u8>, Id<Decl>)>)
pub fn use_modules(&mut self, modules: Vec<(Vec<u8>, Id<Module>)>)
pub fn use_variables(&mut self, variables: Vec<(Vec<u8>, Id<Var>)>)
pub fn add_predecl(&mut self, decl: Box<dyn Command>) -> Option<Id<Decl>>
pub fn find_or_create_plugin( &mut self, identity: &PluginIdentity, make: impl FnOnce() -> Arc<dyn RegisteredPlugin>, ) -> Arc<dyn RegisteredPlugin>
pub fn update_plugin_registry(&mut self, item: PluginRegistryItem)
pub fn merge_predecl(&mut self, name: &[u8]) -> Option<Id<Decl>>
pub fn move_predecls_to_overlay(&mut self)
pub fn hide_decl(&mut self, name: &[u8]) -> Option<Id<Decl>>
pub fn hide_decls(&mut self, decls: &[Vec<u8>])
pub fn add_block(&mut self, block: Arc<Block>) -> Id<Block>
pub fn add_module( &mut self, name: &str, module: Module, comments: Vec<Span>, ) -> Id<Module>
pub fn get_module_comments(&self, module_id: Id<Module>) -> Option<&[Span]>
pub fn next_span_start(&self) -> usize
pub fn global_span_offset(&self) -> usize
pub fn files(&self) -> impl Iterator<Item = &CachedFile>
pub fn get_contents_of_file(&self, file_id: Id<File>) -> Option<&[u8]>
pub fn add_file(&mut self, filename: String, contents: &[u8]) -> Id<File>
pub fn add_virtual_path( &mut self, name: String, virtual_path: VirtualPath, ) -> Id<VirtualPath>
pub fn get_span_for_filename(&self, filename: &str) -> Option<Span>
Sourcepub fn get_span_for_file(&self, file_id: Id<File>) -> Span
pub fn get_span_for_file(&self, file_id: Id<File>) -> Span
Panics:
On invalid FileId
Use with care
pub fn get_span_contents(&self, span: Span) -> &[u8] ⓘ
pub fn enter_scope(&mut self)
pub fn exit_scope(&mut self)
pub fn find_predecl(&self, name: &[u8]) -> Option<Id<Decl>>
pub fn find_decl(&self, name: &[u8]) -> Option<Id<Decl>>
pub fn find_module(&self, name: &[u8]) -> Option<Id<Module>>
pub fn contains_decl_partial_match(&self, name: &[u8]) -> bool
pub fn next_var_id(&self) -> Id<Var>
pub fn list_variables(&self) -> Vec<&[u8]>
pub fn find_variable(&self, name: &[u8]) -> Option<Id<Var>>
pub fn find_variable_in_current_frame(&self, name: &[u8]) -> Option<Id<Var>>
pub fn add_variable( &mut self, name: Vec<u8>, span: Span, ty: Type, mutable: bool, ) -> Id<Var>
Sourcepub fn get_cwd(&self) -> String
👎Deprecated since 0.92.3: please use EngineState::cwd()
instead
pub fn get_cwd(&self) -> String
EngineState::cwd()
insteadReturns the current working directory as a String, which is guaranteed to be canonicalized. Returns an empty string if $env.PWD doesn’t exist, is not a String, or is not an absolute path.
It does NOT consider modifications to the working directory made on a stack.
pub fn get_env_var(&self, name: &str) -> Option<&Value>
Sourcepub fn get_config(&self) -> &Arc<Config>
pub fn get_config(&self) -> &Arc<Config>
Returns a reference to the config stored at permanent state
At runtime, you most likely want to call Stack::get_config()
because this method does not capture environment updates during runtime.
pub fn set_variable_type(&mut self, var_id: Id<Var>, ty: Type)
pub fn set_variable_const_val(&mut self, var_id: Id<Var>, val: Value)
pub fn get_variable(&self, var_id: Id<Var>) -> &Variable
pub fn get_variable_if_possible(&self, var_id: Id<Var>) -> Option<&Variable>
pub fn get_constant(&self, var_id: Id<Var>) -> Result<&Value, ParseError>
pub fn get_decl(&self, decl_id: Id<Decl>) -> &dyn Command
pub fn get_decl_mut(&mut self, decl_id: Id<Decl>) -> &mut Box<dyn Command>
pub fn get_signature(&self, decl: &dyn Command) -> Signature
pub fn find_commands_by_predicate( &self, predicate: impl Fn(&[u8]) -> bool, ignore_deprecated: bool, ) -> Vec<(Vec<u8>, Option<String>, CommandType)>
pub fn get_block(&self, block_id: Id<Block>) -> &Arc<Block>
pub fn get_module(&self, module_id: Id<Module>) -> &Module
pub fn get_block_mut(&mut self, block_id: Id<Block>) -> &mut Block
pub fn has_overlay(&self, name: &[u8]) -> bool
pub fn find_overlay(&self, name: &[u8]) -> Option<&OverlayFrame>
pub fn last_overlay_name(&self) -> &[u8] ⓘ
pub fn last_overlay(&self) -> &OverlayFrame
pub fn last_overlay_mut(&mut self) -> &mut OverlayFrame
Sourcepub fn decls_of_overlay(&self, name: &[u8]) -> HashMap<Vec<u8>, Id<Decl>>
pub fn decls_of_overlay(&self, name: &[u8]) -> HashMap<Vec<u8>, Id<Decl>>
Collect all decls that belong to an overlay
pub fn add_overlay( &mut self, name: Vec<u8>, origin: Id<Module>, decls: Vec<(Vec<u8>, Id<Decl>)>, modules: Vec<(Vec<u8>, Id<Module>)>, prefixed: bool, )
pub fn remove_overlay(&mut self, name: &[u8], keep_custom: bool)
pub fn render(self) -> StateDelta
pub fn build_desc(&self, spans: &[Span]) -> (String, String)
pub fn find_block_by_span(&self, span: Span) -> Option<Arc<Block>>
pub fn find_module_by_span(&self, span: Span) -> Option<Id<Module>>
pub fn find_virtual_path(&self, name: &str) -> Option<&VirtualPath>
pub fn get_virtual_path( &self, virtual_path_id: Id<VirtualPath>, ) -> &(String, VirtualPath)
pub fn add_span(&mut self, span: Span) -> Id<Span>
Trait Implementations§
Source§impl<'a> GetSpan for &'a StateWorkingSet<'a>
impl<'a> GetSpan for &'a StateWorkingSet<'a>
Source§impl<'a> SourceCode for &StateWorkingSet<'a>
impl<'a> SourceCode for &StateWorkingSet<'a>
Source§fn read_span<'b>(
&'b self,
span: &SourceSpan,
context_lines_before: usize,
context_lines_after: usize,
) -> Result<Box<dyn SpanContents<'b> + 'b>, MietteError>
fn read_span<'b>( &'b self, span: &SourceSpan, context_lines_before: usize, context_lines_after: usize, ) -> Result<Box<dyn SpanContents<'b> + 'b>, MietteError>
SourceCode
, keeping a
certain number of lines before and after the span as context.Auto Trait Implementations§
impl<'a> Freeze for StateWorkingSet<'a>
impl<'a> !RefUnwindSafe for StateWorkingSet<'a>
impl<'a> Send for StateWorkingSet<'a>
impl<'a> Sync for StateWorkingSet<'a>
impl<'a> Unpin for StateWorkingSet<'a>
impl<'a> !UnwindSafe for StateWorkingSet<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoSpanned for T
impl<T> IntoSpanned for T
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read more