summaryrefslogtreecommitdiff
path: root/src/model/module.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/model/module.rs')
-rw-r--r--src/model/module.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/model/module.rs b/src/model/module.rs
index c7cb7faf..ba6c76fb 100644
--- a/src/model/module.rs
+++ b/src/model/module.rs
@@ -2,8 +2,9 @@ use std::fmt::{self, Debug, Formatter};
use std::path::Path;
use std::sync::Arc;
-use super::{Content, Scope};
-use crate::util::EcoString;
+use super::{Content, Scope, Value};
+use crate::diag::StrResult;
+use crate::util::{format_eco, EcoString};
/// An evaluated module, ready for importing or typesetting.
#[derive(Clone, Hash)]
@@ -46,6 +47,13 @@ impl Module {
&self.0.scope
}
+ /// Try to access a definition in the module.
+ pub fn get(&self, name: &str) -> StrResult<&Value> {
+ self.scope().get(&name).ok_or_else(|| {
+ format_eco!("module `{}` does not contain `{name}`", self.name())
+ })
+ }
+
/// Extract the module's content.
pub fn content(self) -> Content {
match Arc::try_unwrap(self.0) {