From 2d5988475c9f447e14d63abdf273c0b5180dd310 Mon Sep 17 00:00:00 2001 From: Clar Charr Date: Sat, 14 Jan 2017 19:17:47 -0500 Subject: [PATCH] Implement Display for Recompositions, Decompositions. --- src/decompose.rs | 10 ++++++++++ src/recompose.rs | 10 ++++++++++ src/test.rs | 11 ++++++----- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/decompose.rs b/src/decompose.rs index 81e5e92..789c4a6 100644 --- a/src/decompose.rs +++ b/src/decompose.rs @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +use std::fmt::{self, Write}; // Helper functions used for Unicode normalization fn canonical_sort(comb: &mut [(char, u8)]) { @@ -133,3 +134,12 @@ impl> Iterator for Decompositions { (lower, None) } } + +impl + Clone> fmt::Display for Decompositions { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + for c in self.clone() { + f.write_char(c)?; + } + Ok(()) + } +} diff --git a/src/recompose.rs b/src/recompose.rs index b3737d3..1047209 100644 --- a/src/recompose.rs +++ b/src/recompose.rs @@ -9,6 +9,7 @@ // except according to those terms. use std::collections::VecDeque; +use std::fmt::{self, Write}; use decompose::Decompositions; #[derive(Clone)] @@ -135,3 +136,12 @@ impl> Iterator for Recompositions { } } } + +impl + Clone> fmt::Display for Recompositions { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + for c in self.clone() { + f.write_char(c)?; + } + Ok(()) + } +} diff --git a/src/test.rs b/src/test.rs index 061d985..59c04c0 100644 --- a/src/test.rs +++ b/src/test.rs @@ -14,8 +14,9 @@ use UnicodeNormalization; fn test_nfd() { macro_rules! t { ($input: expr, $expected: expr) => { - assert_eq!($input.nfd().collect::(), $expected); - // A dummy iterator that is not std::str::Chars directly: + assert_eq!($input.nfd().to_string(), $expected); + // A dummy iterator that is not std::str::Chars directly; + // note that `id_func` is used to ensure `Clone` implementation assert_eq!($input.chars().map(|c| c).nfd().collect::(), $expected); } } @@ -35,7 +36,7 @@ fn test_nfd() { fn test_nfkd() { macro_rules! t { ($input: expr, $expected: expr) => { - assert_eq!($input.nfkd().collect::(), $expected); + assert_eq!($input.nfkd().to_string(), $expected); } } t!("abc", "abc"); @@ -54,7 +55,7 @@ fn test_nfkd() { fn test_nfc() { macro_rules! t { ($input: expr, $expected: expr) => { - assert_eq!($input.nfc().collect::(), $expected); + assert_eq!($input.nfc().to_string(), $expected); } } t!("abc", "abc"); @@ -74,7 +75,7 @@ fn test_nfc() { fn test_nfkc() { macro_rules! t { ($input: expr, $expected: expr) => { - assert_eq!($input.nfkc().collect::(), $expected); + assert_eq!($input.nfkc().to_string(), $expected); } } t!("abc", "abc");