From de37a056ed3e90d8ba93c4b3a315a8046ef53484 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Sun, 21 Feb 2021 11:43:25 +0100 Subject: [PATCH] =?UTF-8?q?Split=20pushed=20text=20at=20newlines=20?= =?UTF-8?q?=E2=9C=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/exec/context.rs | 21 ++++++++++++++++----- src/exec/mod.rs | 14 +++++++------- tests/ref/expr/call-invalid.png | Bin 3043 -> 3093 bytes tests/ref/repr.png | Bin 9032 -> 9072 bytes tests/typ/library/box.typ | 2 +- 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/exec/context.rs b/src/exec/context.rs index 5ff55c00b..62f508802 100644 --- a/src/exec/context.rs +++ b/src/exec/context.rs @@ -9,6 +9,7 @@ use crate::geom::{ChildAlign, Dir, Gen, LayoutDirs, Length, Linear, Sides, Size} use crate::layout::{ Expansion, Node, NodePad, NodePages, NodePar, NodeSpacing, NodeStack, NodeText, Tree, }; +use crate::parse::is_newline; /// The context for execution. #[derive(Debug)] @@ -217,7 +218,7 @@ impl<'a> ExecContext<'a> { } } - /// Push a normal space. + /// Push a normal word space. pub fn push_space(&mut self) { let em = self.state.font.font_size(); self.push(NodeSpacing { @@ -226,10 +227,20 @@ impl<'a> ExecContext<'a> { }); } - /// Push a text node. - pub fn push_text(&mut self, text: impl Into) { - let node = self.make_text_node(text.into()); - self.push(node); + /// Push text into the context. + /// + /// The text is split into lines at newlines. + pub fn push_text(&mut self, text: &str) { + let mut newline = false; + for line in text.split_terminator(is_newline) { + if newline { + self.apply_linebreak(); + } + + let node = self.make_text_node(line.into()); + self.push(node); + newline = true; + } } /// Construct a text node from the given string based on the active text diff --git a/src/exec/mod.rs b/src/exec/mod.rs index 37c03cda0..ea2c90f43 100644 --- a/src/exec/mod.rs +++ b/src/exec/mod.rs @@ -139,17 +139,17 @@ impl Exec for Value { fn exec(&self, ctx: &mut ExecContext) { match self { Value::None => {} - Value::Int(v) => ctx.push_text(pretty(v)), - Value::Float(v) => ctx.push_text(pretty(v)), - Value::Str(s) => ctx.push_text(s), - Value::Template(template) => template.exec(ctx), + Value::Int(v) => ctx.push_text(&pretty(v)), + Value::Float(v) => ctx.push_text(&pretty(v)), + Value::Str(v) => ctx.push_text(v), + Value::Template(v) => v.exec(ctx), Value::Error => {} other => { // For values which can't be shown "naturally", we print // the representation in monospace. let prev = Rc::clone(&ctx.state.font.families); ctx.apply_monospace(); - ctx.push_text(pretty(other)); + ctx.push_text(&pretty(other)); ctx.state.font.families = prev; } } @@ -168,8 +168,8 @@ impl Exec for TemplateNode { fn exec(&self, ctx: &mut ExecContext) { match self { Self::Tree { tree, map } => tree.exec_with_map(ctx, &map), - Self::Str(s) => ctx.push_text(s), - Self::Func(func) => func.exec(ctx), + Self::Str(v) => ctx.push_text(v), + Self::Func(v) => v.exec(ctx), } } } diff --git a/tests/ref/expr/call-invalid.png b/tests/ref/expr/call-invalid.png index eee20e4d2076bbeb8aefb833c33d2cff4e1bbd88..5d32238de2b11a3da648c765196cddfe7aebc3d7 100644 GIT binary patch literal 3093 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 diff --git a/tests/ref/repr.png b/tests/ref/repr.png index 13ba629722a2ce1525bda6f764a1b5172b51b164..951506c4b05c1516c47f39f63dc84555a2d2ee1a 100644 GIT binary patch literal 9072 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 literal 9032 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 ac5dvgW2lP_(Y*h7MFyp=qgJM3jrk8z8i&^a diff --git a/tests/typ/library/box.typ b/tests/typ/library/box.typ index 57763f12e..eff0be3d8 100644 --- a/tests/typ/library/box.typ +++ b/tests/typ/library/box.typ @@ -11,7 +11,7 @@ Sometimes there is no box. // Empty box with fixed width and height. #box(width: 6cm, height: 12pt, color: #CB4CED) -// Not visiblem, but creates a gap between the boxes above and below. +// Not visible, but creates a gap between the boxes above and below. #box(width: 2in, color: #ff0000) // These are in a row!