summaryrefslogtreecommitdiff
path: root/src/model/content.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/model/content.rs')
-rw-r--r--src/model/content.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/model/content.rs b/src/model/content.rs
index 8b60ab44..f262d027 100644
--- a/src/model/content.rs
+++ b/src/model/content.rs
@@ -12,7 +12,7 @@ use super::{
};
use crate::diag::{SourceResult, StrResult};
use crate::doc::Meta;
-use crate::eval::{Cast, Str, Value, Vm};
+use crate::eval::{Cast, Dict, Str, Value, Vm};
use crate::syntax::Span;
use crate::util::pretty_array_like;
@@ -251,6 +251,13 @@ impl Content {
.ok_or_else(|| missing_field_no_default(field))
}
+ /// Return the fields of the content as a dict.
+ pub fn dict(&self) -> Dict {
+ self.fields()
+ .map(|(key, value)| (key.to_owned().into(), value))
+ .collect()
+ }
+
/// The content's label.
pub fn label(&self) -> Option<&Label> {
match self.field_ref("label")? {