diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-03-01 16:30:58 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-03-01 16:33:28 +0100 |
| commit | 6ab7760822ccd24b4ef126d4737d41f1be15fe19 (patch) | |
| tree | 49905f91d292ceefe4f9878ead43f117c4b1fec0 /src | |
| parent | ab841188e3d2687ee8f436336e6fde337985a83e (diff) | |
Split up `model` module
Diffstat (limited to 'src')
| -rw-r--r-- | src/doc.rs | 5 | ||||
| -rw-r--r-- | src/eval/args.rs (renamed from src/model/args.rs) | 0 | ||||
| -rw-r--r-- | src/eval/array.rs (renamed from src/model/array.rs) | 4 | ||||
| -rw-r--r-- | src/eval/cast.rs (renamed from src/model/cast.rs) | 5 | ||||
| -rw-r--r-- | src/eval/dict.rs (renamed from src/model/dict.rs) | 2 | ||||
| -rw-r--r-- | src/eval/func.rs (renamed from src/model/func.rs) | 6 | ||||
| -rw-r--r-- | src/eval/library.rs (renamed from src/model/library.rs) | 5 | ||||
| -rw-r--r-- | src/eval/methods.rs (renamed from src/model/methods.rs) | 0 | ||||
| -rw-r--r-- | src/eval/mod.rs (renamed from src/model/eval.rs) | 43 | ||||
| -rw-r--r-- | src/eval/module.rs (renamed from src/model/module.rs) | 0 | ||||
| -rw-r--r-- | src/eval/ops.rs (renamed from src/model/ops.rs) | 0 | ||||
| -rw-r--r-- | src/eval/scope.rs (renamed from src/model/scope.rs) | 0 | ||||
| -rw-r--r-- | src/eval/str.rs (renamed from src/model/str.rs) | 2 | ||||
| -rw-r--r-- | src/eval/symbol.rs (renamed from src/model/symbol.rs) | 0 | ||||
| -rw-r--r-- | src/eval/value.rs (renamed from src/model/value.rs) | 2 | ||||
| -rw-r--r-- | src/ide/analyze.rs | 2 | ||||
| -rw-r--r-- | src/ide/complete.rs | 2 | ||||
| -rw-r--r-- | src/ide/tooltip.rs | 2 | ||||
| -rw-r--r-- | src/lib.rs | 12 | ||||
| -rw-r--r-- | src/model/content.rs | 8 | ||||
| -rw-r--r-- | src/model/mod.rs | 43 | ||||
| -rw-r--r-- | src/model/styles.rs | 3 | ||||
| -rw-r--r-- | src/model/typeset.rs | 5 |
23 files changed, 73 insertions, 78 deletions
@@ -7,15 +7,14 @@ use std::sync::Arc; use ecow::EcoString; +use crate::eval::{dict, Dict, Value}; use crate::font::Font; use crate::geom::{ self, rounded_rect, Abs, Align, Axes, Color, Corners, Dir, Em, Geometry, Numeric, Paint, Point, Rel, RgbaColor, Shape, Sides, Size, Stroke, Transform, }; use crate::image::Image; -use crate::model::{ - capable, dict, node, Content, Dict, Fold, StableId, StyleChain, Value, -}; +use crate::model::{capable, node, Content, Fold, StableId, StyleChain}; /// A finished document with metadata and page frames. #[derive(Debug, Default, Clone, Hash)] diff --git a/src/model/args.rs b/src/eval/args.rs index 159e9a77..159e9a77 100644 --- a/src/model/args.rs +++ b/src/eval/args.rs diff --git a/src/model/array.rs b/src/eval/array.rs index 746763ab..53bae06f 100644 --- a/src/model/array.rs +++ b/src/eval/array.rs @@ -12,11 +12,11 @@ use crate::diag::{bail, At, SourceResult, StrResult}; #[doc(hidden)] macro_rules! __array { ($value:expr; $count:expr) => { - $crate::model::Array::from_vec($crate::model::eco_vec![$value.into(); $count]) + $crate::eval::Array::from_vec($crate::eval::eco_vec![$value.into(); $count]) }; ($($value:expr),* $(,)?) => { - $crate::model::Array::from_vec($crate::model::eco_vec![$($value.into()),*]) + $crate::eval::Array::from_vec($crate::eval::eco_vec![$($value.into()),*]) }; } diff --git a/src/model/cast.rs b/src/eval/cast.rs index 4c300550..77521f7f 100644 --- a/src/model/cast.rs +++ b/src/eval/cast.rs @@ -4,9 +4,7 @@ use std::str::FromStr; use ecow::EcoString; -use super::{ - castable, Array, Content, Dict, Func, Label, Regex, Selector, Str, Transform, Value, -}; +use super::{castable, Array, Dict, Func, Regex, Str, Value}; use crate::diag::StrResult; use crate::doc::{Destination, Lang, Location, Region}; use crate::font::{FontStretch, FontStyle, FontWeight}; @@ -14,6 +12,7 @@ use crate::geom::{ Axes, Color, Corners, Dir, GenAlign, Get, Length, Paint, PartialStroke, Point, Ratio, Rel, Sides, Smart, }; +use crate::model::{Content, Label, Selector, Transform}; use crate::syntax::Spanned; /// Cast from a value to a specific type. diff --git a/src/model/dict.rs b/src/eval/dict.rs index 50a2275f..6c1934c9 100644 --- a/src/model/dict.rs +++ b/src/eval/dict.rs @@ -18,7 +18,7 @@ macro_rules! __dict { #[allow(unused_mut)] let mut map = std::collections::BTreeMap::new(); $(map.insert($key.into(), $value.into());)* - $crate::model::Dict::from_map(map) + $crate::eval::Dict::from_map(map) }}; } diff --git a/src/model/func.rs b/src/eval/func.rs index 2ba462d3..e5280932 100644 --- a/src/model/func.rs +++ b/src/eval/func.rs @@ -5,11 +5,9 @@ use std::sync::Arc; use comemo::{Prehashed, Track, Tracked, TrackedMut}; use ecow::EcoString; -use super::{ - Args, CastInfo, Dict, Eval, Flow, Node, NodeId, Route, Scope, Scopes, Selector, - StyleMap, Tracer, Value, Vm, -}; +use super::{Args, CastInfo, Dict, Eval, Flow, Route, Scope, Scopes, Tracer, Value, Vm}; use crate::diag::{bail, SourceResult, StrResult}; +use crate::model::{Node, NodeId, Selector, StyleMap}; use crate::syntax::ast::{self, AstNode, Expr}; use crate::syntax::{SourceId, Span, SyntaxNode}; use crate::util::hash128; diff --git a/src/model/library.rs b/src/eval/library.rs index 8ef22f10..adfcc6e7 100644 --- a/src/model/library.rs +++ b/src/eval/library.rs @@ -5,10 +5,11 @@ use std::num::NonZeroUsize; use ecow::EcoString; use once_cell::sync::OnceCell; -use super::{Content, Module, NodeId, StyleChain, StyleMap, Vt}; +use super::Module; use crate::diag::SourceResult; use crate::doc::Document; use crate::geom::{Abs, Dir}; +use crate::model::{Content, NodeId, StyleChain, StyleMap, Vt}; use crate::util::hash128; /// Definition of Typst's standard library. @@ -139,6 +140,6 @@ pub fn set_lang_items(items: LangItems) { /// Access a lang item. macro_rules! item { ($name:ident) => { - $crate::model::LANG_ITEMS.get().unwrap().$name + $crate::eval::LANG_ITEMS.get().unwrap().$name }; } diff --git a/src/model/methods.rs b/src/eval/methods.rs index dcb1ca31..dcb1ca31 100644 --- a/src/model/methods.rs +++ b/src/eval/methods.rs diff --git a/src/model/eval.rs b/src/eval/mod.rs index 225c5e7a..2cf6f4d1 100644 --- a/src/model/eval.rs +++ b/src/eval/mod.rs @@ -1,5 +1,40 @@ //! Evaluation of markup into modules. +#[macro_use] +mod library; +#[macro_use] +mod cast; +#[macro_use] +mod array; +#[macro_use] +mod dict; +#[macro_use] +mod str; +#[macro_use] +mod value; +mod args; +mod func; +mod methods; +mod module; +mod ops; +mod scope; +mod symbol; + +pub use typst_macros::{castable, func}; + +pub use self::args::*; +pub use self::array::*; +pub use self::cast::*; +pub use self::dict::*; +pub use self::func::*; +pub use self::library::*; +pub use self::methods::*; +pub use self::module::*; +pub use self::scope::*; +pub use self::str::*; +pub use self::symbol::*; +pub use self::value::*; + use std::collections::BTreeMap; use std::mem; use std::path::{Path, PathBuf}; @@ -8,14 +43,10 @@ use comemo::{Track, Tracked, TrackedMut}; use ecow::EcoVec; use unicode_segmentation::UnicodeSegmentation; -use super::{ - combining_accent, methods, ops, Arg, Args, Array, CapturesVisitor, Closure, Content, - Dict, Func, Label, LangItems, Module, Recipe, Scopes, Selector, StyleMap, Symbol, - Transform, Value, -}; use crate::diag::{ bail, error, At, SourceError, SourceResult, StrResult, Trace, Tracepoint, }; +use crate::model::{Content, Label, Recipe, Selector, StyleMap, Transform}; use crate::syntax::ast::AstNode; use crate::syntax::{ ast, parse_code, Source, SourceId, Span, Spanned, SyntaxKind, SyntaxNode, @@ -43,7 +74,7 @@ pub fn eval( // Hook up the lang items. let library = world.library(); - super::set_lang_items(library.items.clone()); + set_lang_items(library.items.clone()); // Evaluate the module. let route = unsafe { Route::insert(route, id) }; diff --git a/src/model/module.rs b/src/eval/module.rs index e911d859..e911d859 100644 --- a/src/model/module.rs +++ b/src/eval/module.rs diff --git a/src/model/ops.rs b/src/eval/ops.rs index 52b9b06a..52b9b06a 100644 --- a/src/model/ops.rs +++ b/src/eval/ops.rs diff --git a/src/model/scope.rs b/src/eval/scope.rs index f6bd2164..f6bd2164 100644 --- a/src/model/scope.rs +++ b/src/eval/scope.rs diff --git a/src/model/str.rs b/src/eval/str.rs index 5fcc1d05..63ea5dc8 100644 --- a/src/model/str.rs +++ b/src/eval/str.rs @@ -15,7 +15,7 @@ use crate::geom::GenAlign; #[doc(hidden)] macro_rules! __format_str { ($($tts:tt)*) => {{ - $crate::model::Str::from($crate::model::eco_format!($($tts)*)) + $crate::eval::Str::from($crate::eval::eco_format!($($tts)*)) }}; } diff --git a/src/model/symbol.rs b/src/eval/symbol.rs index 73c41067..73c41067 100644 --- a/src/model/symbol.rs +++ b/src/eval/symbol.rs diff --git a/src/model/value.rs b/src/eval/value.rs index f6ab95de..5e06da76 100644 --- a/src/model/value.rs +++ b/src/eval/value.rs @@ -461,7 +461,7 @@ primitive! { Args: "arguments", Args } #[cfg(test)] mod tests { use super::*; - use crate::model::{array, dict}; + use crate::eval::{array, dict}; #[track_caller] fn test(value: impl Into<Value>, exp: &str) { diff --git a/src/ide/analyze.rs b/src/ide/analyze.rs index 357e98f8..3c46cca1 100644 --- a/src/ide/analyze.rs +++ b/src/ide/analyze.rs @@ -2,7 +2,7 @@ use std::path::PathBuf; use comemo::Track; -use crate::model::{eval, Module, Route, Tracer, Value}; +use crate::eval::{eval, Module, Route, Tracer, Value}; use crate::syntax::{ast, LinkedNode, Source, SyntaxKind}; use crate::util::PathExt; use crate::World; diff --git a/src/ide/complete.rs b/src/ide/complete.rs index fe1afe66..06ab53a1 100644 --- a/src/ide/complete.rs +++ b/src/ide/complete.rs @@ -4,7 +4,7 @@ use ecow::{eco_format, EcoString}; use if_chain::if_chain; use super::{analyze_expr, analyze_import, plain_docs_sentence, summarize_font_family}; -use crate::model::{methods_on, CastInfo, Scope, Value}; +use crate::eval::{methods_on, CastInfo, Scope, Value}; use crate::syntax::{ast, LinkedNode, Source, SyntaxKind}; use crate::World; diff --git a/src/ide/tooltip.rs b/src/ide/tooltip.rs index 0796c09e..ac0cb60b 100644 --- a/src/ide/tooltip.rs +++ b/src/ide/tooltip.rs @@ -2,8 +2,8 @@ use if_chain::if_chain; use unicode_segmentation::UnicodeSegmentation; use super::{analyze_expr, plain_docs_sentence, summarize_font_family}; +use crate::eval::{CastInfo, Tracer, Value}; use crate::geom::{round_2, Length, Numeric}; -use crate::model::{CastInfo, Tracer, Value}; use crate::syntax::ast; use crate::syntax::{LinkedNode, Source, SyntaxKind}; use crate::World; @@ -23,8 +23,8 @@ //! [parsed]: syntax::parse //! [syntax tree]: syntax::SyntaxNode //! [AST]: syntax::ast -//! [evaluate]: model::eval -//! [module]: model::Module +//! [evaluate]: eval::eval +//! [module]: eval::Module //! [content]: model::Content //! [typeset]: model::typeset //! [document]: doc::Document @@ -43,23 +43,23 @@ pub mod geom; #[macro_use] pub mod diag; #[macro_use] -pub mod model; +pub mod eval; pub mod doc; pub mod export; pub mod font; pub mod ide; pub mod image; +pub mod model; pub mod syntax; use std::path::Path; use comemo::{Prehashed, Track}; -use model::Tracer; use crate::diag::{FileResult, SourceResult}; use crate::doc::Document; +use crate::eval::{Library, Route, Tracer}; use crate::font::{Font, FontBook}; -use crate::model::{Library, Route}; use crate::syntax::{Source, SourceId}; use crate::util::Buffer; @@ -68,7 +68,7 @@ pub fn compile(world: &(dyn World + 'static), source: &Source) -> SourceResult<D // Evaluate the source file into a module. let route = Route::default(); let mut tracer = Tracer::default(); - let module = model::eval(world.track(), route.track(), tracer.track_mut(), source)?; + let module = eval::eval(world.track(), route.track(), tracer.track_mut(), source)?; // Typeset the module's contents. model::typeset(world.track(), &module.content()) diff --git a/src/model/content.rs b/src/model/content.rs index b8047ffa..b10a3409 100644 --- a/src/model/content.rs +++ b/src/model/content.rs @@ -10,11 +10,9 @@ use ecow::{EcoString, EcoVec}; use siphasher::sip128::{Hasher128, SipHasher}; use typst_macros::node; -use super::{ - capability, capable, Args, Guard, Key, ParamInfo, Property, Recipe, Style, StyleMap, - Value, Vm, -}; +use super::{capability, capable, Guard, Key, Property, Recipe, Style, StyleMap}; use crate::diag::{SourceResult, StrResult}; +use crate::eval::{Args, ParamInfo, Value, Vm}; use crate::syntax::Span; use crate::util::ReadableTypeId; use crate::World; @@ -243,7 +241,7 @@ impl Content { } /// Whether a label can be attached to the content. - pub(super) fn labellable(&self) -> bool { + pub(crate) fn labellable(&self) -> bool { !self.has::<dyn Unlabellable>() } diff --git a/src/model/mod.rs b/src/model/mod.rs index 32b0a003..692d18d5 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -1,49 +1,16 @@ -//! Content and computation model. +//! The document model. #[macro_use] -mod library; -#[macro_use] -mod cast; -#[macro_use] -mod array; -#[macro_use] -mod dict; -#[macro_use] -mod str; -#[macro_use] -mod value; -#[macro_use] mod styles; -mod args; mod content; -mod eval; -mod func; -mod methods; -mod module; -mod ops; mod realize; -mod scope; -mod symbol; mod typeset; -#[doc(hidden)] -pub use once_cell; -pub use typst_macros::{capability, capable, castable, func, node}; - -pub use self::args::*; -pub use self::array::*; -pub use self::cast::*; pub use self::content::*; -pub use self::dict::*; -pub use self::eval::*; -pub use self::func::*; -pub use self::library::*; -pub use self::methods::*; -pub use self::module::*; pub use self::realize::*; -pub use self::scope::*; -pub use self::str::*; pub use self::styles::*; -pub use self::symbol::*; pub use self::typeset::*; -pub use self::value::*; + +#[doc(hidden)] +pub use once_cell; +pub use typst_macros::{capability, capable, node}; diff --git a/src/model/styles.rs b/src/model/styles.rs index 27c40309..18507491 100644 --- a/src/model/styles.rs +++ b/src/model/styles.rs @@ -7,8 +7,9 @@ use std::sync::Arc; use comemo::{Prehashed, Tracked}; -use super::{Args, Content, Dict, Func, Label, NodeId, Regex, Value}; +use super::{Content, Label, NodeId}; use crate::diag::{SourceResult, Trace, Tracepoint}; +use crate::eval::{Args, Dict, Func, Regex, Value}; use crate::geom::{ Abs, Align, Axes, Corners, Em, GenAlign, Length, Numeric, PartialStroke, Rel, Sides, Smart, diff --git a/src/model/typeset.rs b/src/model/typeset.rs index 7af8094c..f8b5e012 100644 --- a/src/model/typeset.rs +++ b/src/model/typeset.rs @@ -5,9 +5,10 @@ use std::num::NonZeroUsize; use comemo::{Track, Tracked, TrackedMut}; -use super::{Content, Selector, StyleChain, Value}; +use super::{Content, Selector, StyleChain}; use crate::diag::SourceResult; use crate::doc::{Document, Element, Frame, Location, Meta}; +use crate::eval::Value; use crate::geom::Transform; use crate::util::hash128; use crate::World; @@ -46,7 +47,7 @@ pub fn typeset(world: Tracked<dyn World>, content: &Content) -> SourceResult<Doc /// A virtual typesetter. /// /// Holds the state needed to [typeset] content. This is the equivalent to the -/// [Vm](super::Vm) for typesetting. +/// [Vm](crate::eval::Vm) for typesetting. pub struct Vt<'a> { /// The compilation environment. #[doc(hidden)] |
