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

+25-15
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

+12-12
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

+27-17
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)