Skip to content

Commit 71a54fa

Browse files
authored
Merge pull request #101 from unicode-rs/constructors
Directly expose constructors for iterators rather than relying on hard-to-discover trait stuff
2 parents ac8fa20 + 154ebfc commit 71a54fa

File tree

3 files changed

+64
-44
lines changed

3 files changed

+64
-44
lines changed

src/decompose.rs

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,33 @@ pub struct Decompositions<I> {
3636
ready: Range<usize>,
3737
}
3838

39-
#[inline]
40-
pub fn new_canonical<I: Iterator<Item = char>>(iter: I) -> Decompositions<I> {
41-
Decompositions {
42-
kind: self::DecompositionType::Canonical,
43-
iter: iter.fuse(),
44-
buffer: TinyVec::new(),
45-
ready: 0..0,
39+
impl<I: Iterator<Item = char>> Decompositions<I> {
40+
/// Create a new decomposition iterator for canonical decompositions (NFD)
41+
///
42+
/// Note that this iterator can also be obtained by directly calling [`.nfd()`](crate::UnicodeNormalization::nfd)
43+
/// on the iterator.
44+
#[inline]
45+
pub fn new_canonical(iter: I) -> Decompositions<I> {
46+
Decompositions {
47+
kind: self::DecompositionType::Canonical,
48+
iter: iter.fuse(),
49+
buffer: TinyVec::new(),
50+
ready: 0..0,
51+
}
4652
}
47-
}
4853

49-
#[inline]
50-
pub fn new_compatible<I: Iterator<Item = char>>(iter: I) -> Decompositions<I> {
51-
Decompositions {
52-
kind: self::DecompositionType::Compatible,
53-
iter: iter.fuse(),
54-
buffer: TinyVec::new(),
55-
ready: 0..0,
54+
/// Create a new decomposition iterator for compatability decompositions (NFkD)
55+
///
56+
/// Note that this iterator can also be obtained by directly calling [`.nfd()`](crate::UnicodeNormalization::nfd)
57+
/// on the iterator.
58+
#[inline]
59+
pub fn new_compatible(iter: I) -> Decompositions<I> {
60+
Decompositions {
61+
kind: self::DecompositionType::Compatible,
62+
iter: iter.fuse(),
63+
buffer: TinyVec::new(),
64+
ready: 0..0,
65+
}
5666
}
5767
}
5868

src/lib.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -133,22 +133,22 @@ pub trait UnicodeNormalization<I: Iterator<Item = char>> {
133133
impl<'a> UnicodeNormalization<Chars<'a>> for &'a str {
134134
#[inline]
135135
fn nfd(self) -> Decompositions<Chars<'a>> {
136-
decompose::new_canonical(self.chars())
136+
Decompositions::new_canonical(self.chars())
137137
}
138138

139139
#[inline]
140140
fn nfkd(self) -> Decompositions<Chars<'a>> {
141-
decompose::new_compatible(self.chars())
141+
Decompositions::new_compatible(self.chars())
142142
}
143143

144144
#[inline]
145145
fn nfc(self) -> Recompositions<Chars<'a>> {
146-
recompose::new_canonical(self.chars())
146+
Recompositions::new_canonical(self.chars())
147147
}
148148

149149
#[inline]
150150
fn nfkc(self) -> Recompositions<Chars<'a>> {
151-
recompose::new_compatible(self.chars())
151+
Recompositions::new_compatible(self.chars())
152152
}
153153

154154
#[inline]
@@ -165,22 +165,22 @@ impl<'a> UnicodeNormalization<Chars<'a>> for &'a str {
165165
impl UnicodeNormalization<option::IntoIter<char>> for char {
166166
#[inline]
167167
fn nfd(self) -> Decompositions<option::IntoIter<char>> {
168-
decompose::new_canonical(Some(self).into_iter())
168+
Decompositions::new_canonical(Some(self).into_iter())
169169
}
170170

171171
#[inline]
172172
fn nfkd(self) -> Decompositions<option::IntoIter<char>> {
173-
decompose::new_compatible(Some(self).into_iter())
173+
Decompositions::new_compatible(Some(self).into_iter())
174174
}
175175

176176
#[inline]
177177
fn nfc(self) -> Recompositions<option::IntoIter<char>> {
178-
recompose::new_canonical(Some(self).into_iter())
178+
Recompositions::new_canonical(Some(self).into_iter())
179179
}
180180

181181
#[inline]
182182
fn nfkc(self) -> Recompositions<option::IntoIter<char>> {
183-
recompose::new_compatible(Some(self).into_iter())
183+
Recompositions::new_compatible(Some(self).into_iter())
184184
}
185185

186186
#[inline]
@@ -197,22 +197,22 @@ impl UnicodeNormalization<option::IntoIter<char>> for char {
197197
impl<I: Iterator<Item = char>> UnicodeNormalization<I> for I {
198198
#[inline]
199199
fn nfd(self) -> Decompositions<I> {
200-
decompose::new_canonical(self)
200+
Decompositions::new_canonical(self)
201201
}
202202

203203
#[inline]
204204
fn nfkd(self) -> Decompositions<I> {
205-
decompose::new_compatible(self)
205+
Decompositions::new_compatible(self)
206206
}
207207

208208
#[inline]
209209
fn nfc(self) -> Recompositions<I> {
210-
recompose::new_canonical(self)
210+
Recompositions::new_canonical(self)
211211
}
212212

213213
#[inline]
214214
fn nfkc(self) -> Recompositions<I> {
215-
recompose::new_compatible(self)
215+
Recompositions::new_compatible(self)
216216
}
217217

218218
#[inline]

src/recompose.rs

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,35 @@ pub struct Recompositions<I> {
3232
last_ccc: Option<u8>,
3333
}
3434

35-
#[inline]
36-
pub fn new_canonical<I: Iterator<Item = char>>(iter: I) -> Recompositions<I> {
37-
Recompositions {
38-
iter: super::decompose::new_canonical(iter),
39-
state: self::RecompositionState::Composing,
40-
buffer: TinyVec::new(),
41-
composee: None,
42-
last_ccc: None,
35+
impl<I: Iterator<Item = char>> Recompositions<I> {
36+
/// Create a new recomposition iterator for canonical compositions (NFC)
37+
///
38+
/// Note that this iterator can also be obtained by directly calling [`.nfc()`](crate::UnicodeNormalization::nfc)
39+
/// on the iterator.
40+
#[inline]
41+
pub fn new_canonical(iter: I) -> Self {
42+
Recompositions {
43+
iter: Decompositions::new_canonical(iter),
44+
state: self::RecompositionState::Composing,
45+
buffer: TinyVec::new(),
46+
composee: None,
47+
last_ccc: None,
48+
}
4349
}
44-
}
4550

46-
#[inline]
47-
pub fn new_compatible<I: Iterator<Item = char>>(iter: I) -> Recompositions<I> {
48-
Recompositions {
49-
iter: super::decompose::new_compatible(iter),
50-
state: self::RecompositionState::Composing,
51-
buffer: TinyVec::new(),
52-
composee: None,
53-
last_ccc: None,
51+
/// Create a new recomposition iterator for compatability compositions (NFkC)
52+
///
53+
/// Note that this iterator can also be obtained by directly calling [`.nfkc()`](crate::UnicodeNormalization::nfkc)
54+
/// on the iterator.
55+
#[inline]
56+
pub fn new_compatible(iter: I) -> Self {
57+
Recompositions {
58+
iter: Decompositions::new_compatible(iter),
59+
state: self::RecompositionState::Composing,
60+
buffer: TinyVec::new(),
61+
composee: None,
62+
last_ccc: None,
63+
}
5464
}
5565
}
5666

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy