summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-02-07 14:19:13 +0100
committerLaurenz <laurmaedje@gmail.com>2022-02-07 14:19:13 +0100
commit9730e785a885a4ab5fcc52ce705298654f82f9c2 (patch)
treefcc6c09caf473ad5845f12805d5c914a43f890e2 /src
parent5d05c3f68a32c4214661a6807a5358865f54f0af (diff)
Tidy up
Diffstat (limited to 'src')
-rw-r--r--src/eval/array.rs2
-rw-r--r--src/eval/dict.rs1
-rw-r--r--src/eval/ops.rs1
-rw-r--r--src/export/subset.rs1
-rw-r--r--src/frame.rs17
-rw-r--r--src/library/mod.rs2
-rw-r--r--src/library/text.rs1
-rw-r--r--src/library/utility.rs8
-rw-r--r--src/util/mod.rs20
9 files changed, 33 insertions, 20 deletions
diff --git a/src/eval/array.rs b/src/eval/array.rs
index 45f6fcc7..4ed172ab 100644
--- a/src/eval/array.rs
+++ b/src/eval/array.rs
@@ -1,7 +1,5 @@
use std::cmp::Ordering;
-use std::convert::TryFrom;
use std::fmt::{self, Debug, Formatter, Write};
-use std::iter::FromIterator;
use std::ops::{Add, AddAssign};
use std::sync::Arc;
diff --git a/src/eval/dict.rs b/src/eval/dict.rs
index 2ce3c3f9..0aa9fd4b 100644
--- a/src/eval/dict.rs
+++ b/src/eval/dict.rs
@@ -1,6 +1,5 @@
use std::collections::BTreeMap;
use std::fmt::{self, Debug, Formatter, Write};
-use std::iter::FromIterator;
use std::ops::{Add, AddAssign};
use std::sync::Arc;
diff --git a/src/eval/ops.rs b/src/eval/ops.rs
index b5fa9f9a..acceb626 100644
--- a/src/eval/ops.rs
+++ b/src/eval/ops.rs
@@ -1,5 +1,4 @@
use std::cmp::Ordering;
-use std::convert::TryFrom;
use super::{Dynamic, Value};
use crate::diag::StrResult;
diff --git a/src/export/subset.rs b/src/export/subset.rs
index 68d45502..651ed52b 100644
--- a/src/export/subset.rs
+++ b/src/export/subset.rs
@@ -2,7 +2,6 @@
use std::borrow::Cow;
use std::collections::HashSet;
-use std::convert::{TryFrom, TryInto};
use std::iter;
use std::ops::Range;
diff --git a/src/frame.rs b/src/frame.rs
index f228fe56..7cc564cc 100644
--- a/src/frame.rs
+++ b/src/frame.rs
@@ -127,18 +127,17 @@ impl Frame {
impl Debug for Frame {
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
- struct Children<'a>(&'a [(Point, Element)]);
-
- impl Debug for Children<'_> {
- fn fmt(&self, f: &mut Formatter) -> fmt::Result {
- f.debug_map().entries(self.0.iter().map(|(k, v)| (k, v))).finish()
- }
- }
-
f.debug_struct("Frame")
.field("size", &self.size)
.field("baseline", &self.baseline)
- .field("children", &Children(&self.elements))
+ .field(
+ "children",
+ &crate::util::debug(|f| {
+ f.debug_map()
+ .entries(self.elements.iter().map(|(k, v)| (k, v)))
+ .finish()
+ }),
+ )
.finish()
}
}
diff --git a/src/library/mod.rs b/src/library/mod.rs
index a86d8bb3..9e3bf18b 100644
--- a/src/library/mod.rs
+++ b/src/library/mod.rs
@@ -60,9 +60,9 @@ macro_rules! prelude {
prelude! {
pub use std::fmt::{self, Debug, Formatter};
+ pub use std::hash::Hash;
pub use std::num::NonZeroUsize;
pub use std::sync::Arc;
- pub use std::hash::Hash;
pub use typst_macros::class;
diff --git a/src/library/text.rs b/src/library/text.rs
index 05b213c8..4aa1bdec 100644
--- a/src/library/text.rs
+++ b/src/library/text.rs
@@ -1,7 +1,6 @@
//! Text shaping and styling.
use std::borrow::Cow;
-use std::convert::TryInto;
use std::fmt::{self, Debug, Formatter};
use std::ops::{BitXor, Range};
diff --git a/src/library/utility.rs b/src/library/utility.rs
index 5b9831c5..ca9d4350 100644
--- a/src/library/utility.rs
+++ b/src/library/utility.rs
@@ -262,10 +262,10 @@ pub fn upper(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> {
/// Converts an integer into a roman numeral.
///
-/// Works for integer between 0 and 3,999,999 inclusive, returns None otherwise.
-/// Adapted from Yann Villessuzanne's roman.rs under the Unlicense, at
-/// https://github.com/linfir/roman.rs/
+/// Works for integer between 0 and 3,999,999.
pub fn roman(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> {
+ // Adapted from Yann Villessuzanne's roman.rs under the Unlicense, at
+ // https://github.com/linfir/roman.rs/
static PAIRS: &'static [(&'static str, usize)] = &[
("M̅", 1000000),
("D̅", 500000),
@@ -292,7 +292,7 @@ pub fn roman(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> {
let Spanned { mut v, span } = args.expect("non-negative integer")?;
match v {
0_usize => return Ok("N".into()),
- 3_999_999 .. => {
+ 4_000_000 .. => {
bail!(
span,
"cannot convert integers greater than 3,999,999 to roman numerals"
diff --git a/src/util/mod.rs b/src/util/mod.rs
index 2f91100f..32ec8dc4 100644
--- a/src/util/mod.rs
+++ b/src/util/mod.rs
@@ -9,10 +9,30 @@ pub use mac_roman::decode_mac_roman;
use std::cell::RefMut;
use std::cmp::Ordering;
+use std::fmt::{self, Debug, Formatter};
use std::ops::Range;
use std::path::{Component, Path, PathBuf};
use std::sync::Arc;
+/// Turn a closure into a struct implementing [`Debug`].
+pub fn debug<F>(f: F) -> impl Debug
+where
+ F: Fn(&mut Formatter) -> fmt::Result,
+{
+ struct Wrapper<F>(F);
+
+ impl<F> Debug for Wrapper<F>
+ where
+ F: Fn(&mut Formatter) -> fmt::Result,
+ {
+ fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
+ self.0(f)
+ }
+ }
+
+ Wrapper(f)
+}
+
/// Additional methods for strings.
pub trait StrExt {
/// The number of code units this string would use if it was encoded in