From 507c5fc92563560426db0d86c0348880b0493467 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 3 May 2022 16:59:13 +0200 Subject: [PATCH] Text replacement show rules --- Cargo.lock | 1 + Cargo.toml | 1 + src/eval/methods.rs | 16 +++++++- src/eval/str.rs | 46 +++++++++++++++++++++++ src/eval/value.rs | 10 ++++- src/library/mod.rs | 1 + src/library/utility/blind.rs | 9 ----- src/library/utility/mod.rs | 2 - src/library/utility/string.rs | 15 ++++++++ src/model/content.rs | 9 ++++- src/model/recipe.rs | 39 ++++++++++++++++++- tests/ref/graphics/shape-rect.png | Bin 13791 -> 16331 bytes tests/ref/style/show-text.png | Bin 0 -> 39399 bytes tests/typ/graphics/shape-rect.typ | 12 +++--- tests/typ/style/show-node.typ | 4 ++ tests/typ/style/show-recursive.typ | 2 +- tests/typ/style/show-text.typ | 58 +++++++++++++++++++++++++++++ tests/typ/utility/regex.typ | 10 +++++ 18 files changed, 212 insertions(+), 23 deletions(-) delete mode 100644 src/library/utility/blind.rs create mode 100644 tests/ref/style/show-text.png create mode 100644 tests/typ/style/show-text.typ create mode 100644 tests/typ/utility/regex.typ diff --git a/Cargo.lock b/Cargo.lock index e429f4676..1c157a688 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -902,6 +902,7 @@ dependencies = [ "pdf-writer", "pico-args", "pixglyph", + "regex", "resvg", "roxmltree", "rustybuzz", diff --git a/Cargo.toml b/Cargo.toml index 1dbe7450a..2bf6c58c7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,6 +23,7 @@ serde = { version = "1", features = ["derive"] } typed-arena = "2" parking_lot = "0.12" unscanny = { git = "https://github.com/typst/unscanny" } +regex = "1" # Text and font handling hypher = "0.1" diff --git a/src/eval/methods.rs b/src/eval/methods.rs index b3674dff8..363474fb5 100644 --- a/src/eval/methods.rs +++ b/src/eval/methods.rs @@ -1,8 +1,9 @@ //! Methods on values. -use super::{Args, StrExt, Value}; +use super::{Args, Regex, StrExt, Value}; use crate::diag::{At, TypResult}; use crate::syntax::Span; +use crate::util::EcoString; use crate::Context; /// Call a method on a value. @@ -66,6 +67,19 @@ pub fn call( _ => missing()?, }, + Value::Dyn(dynamic) => { + if let Some(regex) = dynamic.downcast::() { + match method { + "matches" => { + Value::Bool(regex.matches(&args.expect::("text")?)) + } + _ => missing()?, + } + } else { + missing()? + } + } + _ => missing()?, }; diff --git a/src/eval/str.rs b/src/eval/str.rs index 3b4349a16..514bf318f 100644 --- a/src/eval/str.rs +++ b/src/eval/str.rs @@ -1,3 +1,7 @@ +use std::fmt::{self, Debug, Formatter}; +use std::hash::{Hash, Hasher}; +use std::ops::Deref; + use super::{Array, Value}; use crate::diag::StrResult; use crate::util::EcoString; @@ -35,3 +39,45 @@ impl StrExt for EcoString { } } } + +/// A regular expression. +#[derive(Clone)] +pub struct Regex(regex::Regex); + +impl Regex { + /// Create a new regex. + pub fn new(re: &str) -> StrResult { + regex::Regex::new(re).map(Self).map_err(|err| err.to_string()) + } + + /// Whether the regex matches the given `text`. + pub fn matches(&self, text: &str) -> bool { + self.0.is_match(text) + } +} + +impl Deref for Regex { + type Target = regex::Regex; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl Debug for Regex { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "regex({:?})", self.0.as_str()) + } +} + +impl PartialEq for Regex { + fn eq(&self, other: &Self) -> bool { + self.0.as_str() == other.0.as_str() + } +} + +impl Hash for Regex { + fn hash(&self, state: &mut H) { + self.0.as_str().hash(state); + } +} diff --git a/src/eval/value.rs b/src/eval/value.rs index ba30348fe..fc54cbceb 100644 --- a/src/eval/value.rs +++ b/src/eval/value.rs @@ -5,7 +5,7 @@ use std::hash::{Hash, Hasher}; use std::num::NonZeroUsize; use std::sync::Arc; -use super::{ops, Args, Array, Dict, Func, RawLength}; +use super::{ops, Args, Array, Dict, Func, RawLength, Regex}; use crate::diag::{with_alternative, StrResult}; use crate::geom::{ Angle, Color, Dir, Em, Fraction, Length, Paint, Ratio, Relative, RgbaColor, Sides, @@ -641,6 +641,10 @@ dynamic! { Dir: "direction", } +dynamic! { + Regex: "regular expression", +} + castable! { usize, Expected: "non-negative integer", @@ -686,8 +690,10 @@ castable! { castable! { Pattern, - Expected: "function", + Expected: "function, string or regular expression", Value::Func(func) => Pattern::Node(func.node()?), + Value::Str(text) => Pattern::text(&text), + @regex: Regex => Pattern::Regex(regex.clone()), } #[cfg(test)] diff --git a/src/library/mod.rs b/src/library/mod.rs index e90e5cc4f..eeda620d2 100644 --- a/src/library/mod.rs +++ b/src/library/mod.rs @@ -83,6 +83,7 @@ pub fn new() -> Scope { std.def_fn("cmyk", utility::cmyk); std.def_fn("repr", utility::repr); std.def_fn("str", utility::str); + std.def_fn("regex", utility::regex); std.def_fn("lower", utility::lower); std.def_fn("upper", utility::upper); std.def_fn("letter", utility::letter); diff --git a/src/library/utility/blind.rs b/src/library/utility/blind.rs deleted file mode 100644 index 0075ab91f..000000000 --- a/src/library/utility/blind.rs +++ /dev/null @@ -1,9 +0,0 @@ -use lipsum::lipsum_from_seed; - -use crate::library::prelude::*; - -/// Create blind text. -pub fn lorem(_: &mut Context, args: &mut Args) -> TypResult { - let words: usize = args.expect("number of words")?; - Ok(Value::Str(lipsum_from_seed(words, 97).into())) -} diff --git a/src/library/utility/mod.rs b/src/library/utility/mod.rs index 4244ccbf1..13220242b 100644 --- a/src/library/utility/mod.rs +++ b/src/library/utility/mod.rs @@ -1,11 +1,9 @@ //! Computational utility functions. -mod blind; mod color; mod math; mod string; -pub use blind::*; pub use color::*; pub use math::*; pub use string::*; diff --git a/src/library/utility/string.rs b/src/library/utility/string.rs index 92d80be2c..0b309b318 100644 --- a/src/library/utility/string.rs +++ b/src/library/utility/string.rs @@ -1,3 +1,6 @@ +use lipsum::lipsum_from_seed; + +use crate::eval::Regex; use crate::library::prelude::*; use crate::library::text::{Case, TextNode}; @@ -37,6 +40,18 @@ fn case(case: Case, args: &mut Args) -> TypResult { }) } +/// Create blind text. +pub fn lorem(_: &mut Context, args: &mut Args) -> TypResult { + let words: usize = args.expect("number of words")?; + Ok(Value::Str(lipsum_from_seed(words, 97).into())) +} + +/// Create a regular expression. +pub fn regex(_: &mut Context, args: &mut Args) -> TypResult { + let Spanned { v, span } = args.expect::>("regular expression")?; + Ok(Regex::new(&v).at(span)?.into()) +} + /// Converts an integer into one or multiple letters. pub fn letter(_: &mut Context, args: &mut Args) -> TypResult { convert(Numbering::Letter, args) diff --git a/src/model/content.rs b/src/model/content.rs index 70205acc0..6956d3806 100644 --- a/src/model/content.rs +++ b/src/model/content.rs @@ -366,12 +366,19 @@ impl<'a, 'ctx> Builder<'a, 'ctx> { } fn accept(&mut self, content: &'a Content, styles: StyleChain<'a>) -> TypResult<()> { - // Handle special content kinds. match content { Content::Empty => return Ok(()), + Content::Text(text) => { + if let Some(realized) = styles.apply(self.ctx, Target::Text(text))? { + let stored = self.scratch.templates.alloc(realized); + return self.accept(stored, styles); + } + } + Content::Show(node, _) => return self.show(node, styles), Content::Styled(styled) => return self.styled(styled, styles), Content::Sequence(seq) => return self.sequence(seq, styles), + _ => {} } diff --git a/src/model/recipe.rs b/src/model/recipe.rs index f6adf4a50..48e7a22e1 100644 --- a/src/model/recipe.rs +++ b/src/model/recipe.rs @@ -2,7 +2,7 @@ use std::fmt::{self, Debug, Formatter}; use super::{Content, Interruption, NodeId, Show, ShowNode, StyleEntry}; use crate::diag::{At, TypResult}; -use crate::eval::{Args, Func, Value}; +use crate::eval::{Args, Func, Regex, Value}; use crate::library::structure::{EnumNode, ListNode}; use crate::syntax::Span; use crate::Context; @@ -23,6 +23,7 @@ impl Recipe { pub fn applicable(&self, target: Target) -> bool { match (&self.pattern, target) { (Pattern::Node(id), Target::Node(node)) => *id == node.id(), + (Pattern::Regex(_), Target::Text(_)) => true, _ => false, } } @@ -43,6 +44,31 @@ impl Recipe { })? } + (Target::Text(text), Pattern::Regex(regex)) => { + let mut result = vec![]; + let mut cursor = 0; + + for mat in regex.find_iter(text) { + let start = mat.start(); + if cursor < start { + result.push(Content::Text(text[cursor .. start].into())); + } + + result.push(self.call(ctx, || Value::Str(mat.as_str().into()))?); + cursor = mat.end(); + } + + if result.is_empty() { + return Ok(None); + } + + if cursor < text.len() { + result.push(Content::Text(text[cursor ..].into())); + } + + Content::sequence(result) + } + _ => return Ok(None), }; @@ -86,6 +112,15 @@ impl Debug for Recipe { pub enum Pattern { /// Defines the appearence of some node. Node(NodeId), + /// Defines text to be replaced. + Regex(Regex), +} + +impl Pattern { + /// Define a simple text replacement pattern. + pub fn text(text: &str) -> Self { + Self::Regex(Regex::new(®ex::escape(text)).unwrap()) + } } /// A target for a show rule recipe. @@ -93,6 +128,8 @@ pub enum Pattern { pub enum Target<'a> { /// A showable node. Node(&'a ShowNode), + /// A slice of text. + Text(&'a str), } /// Identifies a show rule recipe. diff --git a/tests/ref/graphics/shape-rect.png b/tests/ref/graphics/shape-rect.png index 5bbaf3db7b1396485c0659f61d15e8108518f1d5..5ba78f97ee538b1f2a0263ca7e456d30a5a0d9c7 100644 GIT binary patch literal 16331 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 literal 13791 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 diff --git a/tests/ref/style/show-text.png b/tests/ref/style/show-text.png new file mode 100644 index 0000000000000000000000000000000000000000..53c9d13216c9685ddf217413f06134d5f4735967 GIT binary patch literal 39399 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