summaryrefslogtreecommitdiff
path: root/src/library/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/mod.rs')
-rw-r--r--src/library/mod.rs65
1 files changed, 15 insertions, 50 deletions
diff --git a/src/library/mod.rs b/src/library/mod.rs
index 784ef204..74f77204 100644
--- a/src/library/mod.rs
+++ b/src/library/mod.rs
@@ -2,64 +2,29 @@
use crate::func::Scope;
-mod align;
-mod boxed;
-mod breaks;
-mod spacing;
-mod styles;
+mod structure;
+mod style;
-/// Useful imports for creating your own functions.
-pub mod prelude {
- pub use crate::func::{Command, CommandList, Function};
- pub use crate::layout::{layout_tree, Layout, LayoutContext, MultiLayout};
- pub use crate::layout::{LayoutError, LayoutResult};
- pub use crate::parsing::{parse, ParseContext, ParseError, ParseResult};
- pub use crate::syntax::{Expression, FuncHeader, SyntaxTree};
- pub use super::helpers::*;
-}
-
-pub use align::AlignFunc;
-pub use boxed::BoxFunc;
-pub use breaks::{LinebreakFunc, PagebreakFunc};
-pub use spacing::{HorizontalSpaceFunc, VerticalSpaceFunc};
-pub use styles::{BoldFunc, ItalicFunc, MonospaceFunc};
+pub use structure::*;
+pub use style::*;
/// Create a scope with all standard functions.
pub fn std() -> Scope {
let mut std = Scope::new();
- std.add::<AlignFunc>("align");
- std.add::<BoxFunc>("box");
- std.add::<LinebreakFunc>("line.break");
- std.add::<LinebreakFunc>("n");
- std.add::<PagebreakFunc>("page.break");
+ std.add::<Align>("align");
+ std.add::<Boxed>("box");
- std.add::<HorizontalSpaceFunc>("h");
- std.add::<VerticalSpaceFunc>("v");
+ std.add::<Linebreak>("line.break");
+ std.add::<Linebreak>("n");
+ std.add::<Pagebreak>("page.break");
- std.add::<BoldFunc>("bold");
- std.add::<ItalicFunc>("italic");
- std.add::<MonospaceFunc>("mono");
- std
-}
+ std.add::<HorizontalSpace>("h");
+ std.add::<VerticalSpace>("v");
-/// Helpers for writing custom functions.
-pub mod helpers {
- use super::prelude::*;
+ std.add::<Bold>("bold");
+ std.add::<Italic>("italic");
+ std.add::<Monospace>("mono");
- pub fn has_arguments(header: &FuncHeader) -> bool {
- !header.args.is_empty() || !header.kwargs.is_empty()
- }
-
- pub fn parse_maybe_body(body: Option<&str>, ctx: ParseContext) -> ParseResult<Option<SyntaxTree>> {
- if let Some(body) = body {
- Ok(Some(parse(body, ctx)?))
- } else {
- Ok(None)
- }
- }
-
- pub fn err<S: Into<String>, T>(message: S) -> ParseResult<T> {
- Err(ParseError::new(message))
- }
+ std
}