summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-05-03 16:59:13 +0200
committerLaurenz <laurmaedje@gmail.com>2022-05-04 00:14:31 +0200
commit507c5fc92563560426db0d86c0348880b0493467 (patch)
tree45116b62fb0fffe8e88d6c96ae1fcf11c73f8ee9 /src/library
parente18a896a93cae987aa30addd40e678bf0064fd31 (diff)
Text replacement show rules
Diffstat (limited to 'src/library')
-rw-r--r--src/library/mod.rs1
-rw-r--r--src/library/utility/blind.rs9
-rw-r--r--src/library/utility/mod.rs2
-rw-r--r--src/library/utility/string.rs15
4 files changed, 16 insertions, 11 deletions
diff --git a/src/library/mod.rs b/src/library/mod.rs
index e90e5cc4..eeda620d 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 0075ab91..00000000
--- 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<Value> {
- 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 4244ccbf..13220242 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 92d80be2..0b309b31 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<Value> {
})
}
+/// Create blind text.
+pub fn lorem(_: &mut Context, args: &mut Args) -> TypResult<Value> {
+ 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<Value> {
+ let Spanned { v, span } = args.expect::<Spanned<EcoString>>("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<Value> {
convert(Numbering::Letter, args)