Skip to content

Commit d1095fc

Browse files
fix: use finl_unicode for character categories
1 parent 04ac682 commit d1095fc

File tree

3 files changed

+5
-320
lines changed

3 files changed

+5
-320
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ documentation = "https://docs.rs/stringprep/0.1.2/stringprep"
99
readme = "README.md"
1010

1111
[dependencies]
12+
finl_unicode = "1.2.0"
1213
unicode-bidi = "0.3"
1314
unicode-normalization = "0.1"

src/lib.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
#![warn(missing_docs)]
66
extern crate unicode_bidi;
77
extern crate unicode_normalization;
8+
extern crate finl_unicode;
89

910
use std::borrow::Cow;
1011
use std::fmt;
12+
use finl_unicode::categories::CharacterCategories;
1113
use unicode_normalization::UnicodeNormalization;
1214

1315
mod rfc3454;
@@ -321,7 +323,7 @@ pub fn x520prep(s: &str, case_fold: bool) -> Result<Cow<'_, str>, Error> {
321323
// 2. Map
322324
let mapped = s.chars()
323325
.filter(|&c| !x520_mapped_to_nothing(c))
324-
.map(|c| if c.is_whitespace() { ' ' } else { c });
326+
.map(|c| if c.is_separator() { ' ' } else { c });
325327

326328
// 3. Normalize
327329
let normalized = if case_fold {
@@ -346,7 +348,7 @@ pub fn x520prep(s: &str, case_fold: bool) -> Result<Cow<'_, str>, Error> {
346348
// "The first code point of a string is prohibited from being a combining character."
347349
let first_char = s.chars().next();
348350
if let Some(c) = first_char {
349-
if tables::unicode_mark_category(c) {
351+
if c.is_mark() {
350352
// I do think this ought to be considered a different error, but adding
351353
// another enum variant would be a breaking change, so this is "good"
352354
return Err(Error(ErrorCause::ProhibitedCharacter(first_char.unwrap())));

src/tables.rs

Lines changed: 0 additions & 318 deletions
Original file line numberDiff line numberDiff line change
@@ -199,321 +199,3 @@ pub fn bidi_l(c: char) -> bool {
199199
_ => false,
200200
}
201201
}
202-
203-
/// The table of all Unicode combining characters, meaning all characters under
204-
/// the Unicode "Mark" (M) category.
205-
pub fn unicode_mark_category(c: char) -> bool {
206-
match c {
207-
'\u{300}'..='\u{36F}'
208-
| '\u{483}'..='\u{489}'
209-
| '\u{591}'..='\u{5BD}'
210-
| '\u{5BF}'
211-
| '\u{5C1}'..='\u{5C2}'
212-
| '\u{5C4}'..='\u{5C5}'
213-
| '\u{5C7}'
214-
| '\u{610}'..='\u{61A}'
215-
| '\u{64B}'..='\u{65F}'
216-
| '\u{670}'
217-
| '\u{6D6}'..='\u{6DC}'
218-
| '\u{6DF}'..='\u{6E4}'
219-
| '\u{6E7}'..='\u{6E8}'
220-
| '\u{6EA}'..='\u{6ED}'
221-
| '\u{711}'
222-
| '\u{730}'..='\u{74A}'
223-
| '\u{7A6}'..='\u{7B0}'
224-
| '\u{7EB}'..='\u{7F3}'
225-
| '\u{7FD}'
226-
| '\u{816}'..='\u{819}'
227-
| '\u{81B}'..='\u{823}'
228-
| '\u{825}'..='\u{827}'
229-
| '\u{829}'..='\u{82D}'
230-
| '\u{859}'..='\u{85B}'
231-
| '\u{898}'..='\u{89F}'
232-
| '\u{8CA}'..='\u{8E1}'
233-
| '\u{8E3}'..='\u{903}'
234-
| '\u{93A}'..='\u{93C}'
235-
| '\u{93E}'..='\u{94F}'
236-
| '\u{951}'..='\u{957}'
237-
| '\u{962}'..='\u{963}'
238-
| '\u{981}'..='\u{983}'
239-
| '\u{9BC}'
240-
| '\u{9BE}'..='\u{9C4}'
241-
| '\u{9C7}'..='\u{9C8}'
242-
| '\u{9CB}'..='\u{9CD}'
243-
| '\u{9D7}'
244-
| '\u{9E2}'..='\u{9E3}'
245-
| '\u{9FE}'
246-
| '\u{A01}'..='\u{A03}'
247-
| '\u{A3C}'
248-
| '\u{A3E}'..='\u{A42}'
249-
| '\u{A47}'..='\u{A48}'
250-
| '\u{A4B}'..='\u{A4D}'
251-
| '\u{A51}'
252-
| '\u{A70}'..='\u{A71}'
253-
| '\u{A75}'
254-
| '\u{A81}'..='\u{A83}'
255-
| '\u{ABC}'
256-
| '\u{ABE}'..='\u{AC5}'
257-
| '\u{AC7}'..='\u{AC9}'
258-
| '\u{ACB}'..='\u{ACD}'
259-
| '\u{AE2}'..='\u{AE3}'
260-
| '\u{AFA}'..='\u{AFF}'
261-
| '\u{B01}'..='\u{B03}'
262-
| '\u{B3C}'
263-
| '\u{B3E}'..='\u{B44}'
264-
| '\u{B47}'..='\u{B48}'
265-
| '\u{B4B}'..='\u{B4D}'
266-
| '\u{B55}'..='\u{B57}'
267-
| '\u{B62}'..='\u{B63}'
268-
| '\u{B82}'
269-
| '\u{BBE}'..='\u{BC2}'
270-
| '\u{BC6}'..='\u{BC8}'
271-
| '\u{BCA}'..='\u{BCD}'
272-
| '\u{BD7}'
273-
| '\u{C00}'..='\u{C04}'
274-
| '\u{C3C}'
275-
| '\u{C3E}'..='\u{C44}'
276-
| '\u{C46}'..='\u{C48}'
277-
| '\u{C4A}'..='\u{C4D}'
278-
| '\u{C55}'..='\u{C56}'
279-
| '\u{C62}'..='\u{C63}'
280-
| '\u{C81}'..='\u{C83}'
281-
| '\u{CBC}'
282-
| '\u{CBE}'..='\u{CC4}'
283-
| '\u{CC6}'..='\u{CC8}'
284-
| '\u{CCA}'..='\u{CCD}'
285-
| '\u{CD5}'..='\u{CD6}'
286-
| '\u{CE2}'..='\u{CE3}'
287-
| '\u{CF3}'
288-
| '\u{D00}'..='\u{D03}'
289-
| '\u{D3B}'..='\u{D3C}'
290-
| '\u{D3E}'..='\u{D44}'
291-
| '\u{D46}'..='\u{D48}'
292-
| '\u{D4A}'..='\u{D4D}'
293-
| '\u{D57}'
294-
| '\u{D62}'..='\u{D63}'
295-
| '\u{D81}'..='\u{D83}'
296-
| '\u{DCA}'
297-
| '\u{DCF}'..='\u{DD4}'
298-
| '\u{DD6}'
299-
| '\u{DD8}'..='\u{DDF}'
300-
| '\u{DF2}'..='\u{DF3}'
301-
| '\u{E31}'
302-
| '\u{E34}'..='\u{E3A}'
303-
| '\u{E47}'..='\u{E4E}'
304-
| '\u{EB1}'
305-
| '\u{EB4}'..='\u{EBC}'
306-
| '\u{EC8}'..='\u{ECE}'
307-
| '\u{F18}'..='\u{F19}'
308-
| '\u{F35}'
309-
| '\u{F37}'
310-
| '\u{F39}'
311-
| '\u{F3E}'..='\u{F3F}'
312-
| '\u{F71}'..='\u{F84}'
313-
| '\u{F86}'..='\u{F87}'
314-
| '\u{F8D}'..='\u{F97}'
315-
| '\u{F99}'..='\u{FBC}'
316-
| '\u{FC6}'
317-
| '\u{102B}'..='\u{103E}'
318-
| '\u{1056}'..='\u{1059}'
319-
| '\u{105E}'..='\u{1060}'
320-
| '\u{1062}'..='\u{1064}'
321-
| '\u{1067}'..='\u{106D}'
322-
| '\u{1071}'..='\u{1074}'
323-
| '\u{1082}'..='\u{108D}'
324-
| '\u{108F}'
325-
| '\u{109A}'..='\u{109D}'
326-
| '\u{135D}'..='\u{135F}'
327-
| '\u{1712}'..='\u{1715}'
328-
| '\u{1732}'..='\u{1734}'
329-
| '\u{1752}'..='\u{1753}'
330-
| '\u{1772}'..='\u{1773}'
331-
| '\u{17B4}'..='\u{17D3}'
332-
| '\u{17DD}'
333-
| '\u{180B}'..='\u{180D}'
334-
| '\u{180F}'
335-
| '\u{1885}'..='\u{1886}'
336-
| '\u{18A9}'
337-
| '\u{1920}'..='\u{192B}'
338-
| '\u{1930}'..='\u{193B}'
339-
| '\u{1A17}'..='\u{1A1B}'
340-
| '\u{1A55}'..='\u{1A5E}'
341-
| '\u{1A60}'..='\u{1A7C}'
342-
| '\u{1A7F}'
343-
| '\u{1AB0}'..='\u{1ACE}'
344-
| '\u{1B00}'..='\u{1B04}'
345-
| '\u{1B34}'..='\u{1B44}'
346-
| '\u{1B6B}'..='\u{1B73}'
347-
| '\u{1B80}'..='\u{1B82}'
348-
| '\u{1BA1}'..='\u{1BAD}'
349-
| '\u{1BE6}'..='\u{1BF3}'
350-
| '\u{1C24}'..='\u{1C37}'
351-
| '\u{1CD0}'..='\u{1CD2}'
352-
| '\u{1CD4}'..='\u{1CE8}'
353-
| '\u{1CED}'
354-
| '\u{1CF4}'
355-
| '\u{1CF7}'..='\u{1CF9}'
356-
| '\u{1DC0}'..='\u{1DFF}'
357-
| '\u{20D0}'..='\u{20F0}'
358-
| '\u{2CEF}'..='\u{2CF1}'
359-
| '\u{2D7F}'
360-
| '\u{2DE0}'..='\u{2DFF}'
361-
| '\u{302A}'..='\u{302F}'
362-
| '\u{3099}'..='\u{309A}'
363-
| '\u{A66F}'..='\u{A672}'
364-
| '\u{A674}'..='\u{A67D}'
365-
| '\u{A69E}'..='\u{A69F}'
366-
| '\u{A6F0}'..='\u{A6F1}'
367-
| '\u{A802}'
368-
| '\u{A806}'
369-
| '\u{A80B}'
370-
| '\u{A823}'..='\u{A827}'
371-
| '\u{A82C}'
372-
| '\u{A880}'..='\u{A881}'
373-
| '\u{A8B4}'..='\u{A8C5}'
374-
| '\u{A8E0}'..='\u{A8F1}'
375-
| '\u{A8FF}'
376-
| '\u{A926}'..='\u{A92D}'
377-
| '\u{A947}'..='\u{A953}'
378-
| '\u{A980}'..='\u{A983}'
379-
| '\u{A9B3}'..='\u{A9C0}'
380-
| '\u{A9E5}'
381-
| '\u{AA29}'..='\u{AA36}'
382-
| '\u{AA43}'
383-
| '\u{AA4C}'..='\u{AA4D}'
384-
| '\u{AA7B}'..='\u{AA7D}'
385-
| '\u{AAB0}'
386-
| '\u{AAB2}'..='\u{AAB4}'
387-
| '\u{AAB7}'..='\u{AAB8}'
388-
| '\u{AABE}'..='\u{AABF}'
389-
| '\u{AAC1}'
390-
| '\u{AAEB}'..='\u{AAEF}'
391-
| '\u{AAF5}'..='\u{AAF6}'
392-
| '\u{ABE3}'..='\u{ABEA}'
393-
| '\u{ABEC}'..='\u{ABED}'
394-
| '\u{FB1E}'
395-
| '\u{FE00}'..='\u{FE0F}'
396-
| '\u{FE20}'..='\u{FE2F}'
397-
| '\u{101FD}'
398-
| '\u{102E0}'
399-
| '\u{10376}'..='\u{1037A}'
400-
| '\u{10A01}'..='\u{10A03}'
401-
| '\u{10A05}'..='\u{10A06}'
402-
| '\u{10A0C}'..='\u{10A0F}'
403-
| '\u{10A38}'..='\u{10A3A}'
404-
| '\u{10A3F}'
405-
| '\u{10AE5}'..='\u{10AE6}'
406-
| '\u{10D24}'..='\u{10D27}'
407-
| '\u{10EAB}'..='\u{10EAC}'
408-
| '\u{10EFD}'..='\u{10EFF}'
409-
| '\u{10F46}'..='\u{10F50}'
410-
| '\u{10F82}'..='\u{10F85}'
411-
| '\u{11000}'..='\u{11002}'
412-
| '\u{11038}'..='\u{11046}'
413-
| '\u{11070}'
414-
| '\u{11073}'..='\u{11074}'
415-
| '\u{1107F}'..='\u{11082}'
416-
| '\u{110B0}'..='\u{110BA}'
417-
| '\u{110C2}'
418-
| '\u{11100}'..='\u{11102}'
419-
| '\u{11127}'..='\u{11134}'
420-
| '\u{11145}'..='\u{11146}'
421-
| '\u{11173}'
422-
| '\u{11180}'..='\u{11182}'
423-
| '\u{111B3}'..='\u{111C0}'
424-
| '\u{111C9}'..='\u{111CC}'
425-
| '\u{111CE}'..='\u{111CF}'
426-
| '\u{1122C}'..='\u{11237}'
427-
| '\u{1123E}'
428-
| '\u{11241}'
429-
| '\u{112DF}'..='\u{112EA}'
430-
| '\u{11300}'..='\u{11303}'
431-
| '\u{1133B}'..='\u{1133C}'
432-
| '\u{1133E}'..='\u{11344}'
433-
| '\u{11347}'..='\u{11348}'
434-
| '\u{1134B}'..='\u{1134D}'
435-
| '\u{11357}'
436-
| '\u{11362}'..='\u{11363}'
437-
| '\u{11366}'..='\u{1136C}'
438-
| '\u{11370}'..='\u{11374}'
439-
| '\u{11435}'..='\u{11446}'
440-
| '\u{1145E}'
441-
| '\u{114B0}'..='\u{114C3}'
442-
| '\u{115AF}'..='\u{115B5}'
443-
| '\u{115B8}'..='\u{115C0}'
444-
| '\u{115DC}'..='\u{115DD}'
445-
| '\u{11630}'..='\u{11640}'
446-
| '\u{116AB}'..='\u{116B7}'
447-
| '\u{1171D}'..='\u{1172B}'
448-
| '\u{1182C}'..='\u{1183A}'
449-
| '\u{11930}'..='\u{11935}'
450-
| '\u{11937}'..='\u{11938}'
451-
| '\u{1193B}'..='\u{1193E}'
452-
| '\u{11940}'
453-
| '\u{11942}'..='\u{11943}'
454-
| '\u{119D1}'..='\u{119D7}'
455-
| '\u{119DA}'..='\u{119E0}'
456-
| '\u{119E4}'
457-
| '\u{11A01}'..='\u{11A0A}'
458-
| '\u{11A33}'..='\u{11A39}'
459-
| '\u{11A3B}'..='\u{11A3E}'
460-
| '\u{11A47}'
461-
| '\u{11A51}'..='\u{11A5B}'
462-
| '\u{11A8A}'..='\u{11A99}'
463-
| '\u{11C2F}'..='\u{11C36}'
464-
| '\u{11C38}'..='\u{11C3F}'
465-
| '\u{11C92}'..='\u{11CA7}'
466-
| '\u{11CA9}'..='\u{11CB6}'
467-
| '\u{11D31}'..='\u{11D36}'
468-
| '\u{11D3A}'
469-
| '\u{11D3C}'..='\u{11D3D}'
470-
| '\u{11D3F}'..='\u{11D45}'
471-
| '\u{11D47}'
472-
| '\u{11D8A}'..='\u{11D8E}'
473-
| '\u{11D90}'..='\u{11D91}'
474-
| '\u{11D93}'..='\u{11D97}'
475-
| '\u{11EF3}'..='\u{11EF6}'
476-
| '\u{11F00}'..='\u{11F01}'
477-
| '\u{11F03}'
478-
| '\u{11F34}'..='\u{11F3A}'
479-
| '\u{11F3E}'..='\u{11F42}'
480-
| '\u{13440}'
481-
| '\u{13447}'..='\u{13455}'
482-
| '\u{16AF0}'..='\u{16AF4}'
483-
| '\u{16B30}'..='\u{16B36}'
484-
| '\u{16F4F}'
485-
| '\u{16F51}'..='\u{16F87}'
486-
| '\u{16F8F}'..='\u{16F92}'
487-
| '\u{16FE4}'
488-
| '\u{16FF0}'..='\u{16FF1}'
489-
| '\u{1BC9D}'..='\u{1BC9E}'
490-
| '\u{1CF00}'..='\u{1CF2D}'
491-
| '\u{1CF30}'..='\u{1CF46}'
492-
| '\u{1D165}'..='\u{1D169}'
493-
| '\u{1D16D}'..='\u{1D172}'
494-
| '\u{1D17B}'..='\u{1D182}'
495-
| '\u{1D185}'..='\u{1D18B}'
496-
| '\u{1D1AA}'..='\u{1D1AD}'
497-
| '\u{1D242}'..='\u{1D244}'
498-
| '\u{1DA00}'..='\u{1DA36}'
499-
| '\u{1DA3B}'..='\u{1DA6C}'
500-
| '\u{1DA75}'
501-
| '\u{1DA84}'
502-
| '\u{1DA9B}'..='\u{1DA9F}'
503-
| '\u{1DAA1}'..='\u{1DAAF}'
504-
| '\u{1E000}'..='\u{1E006}'
505-
| '\u{1E008}'..='\u{1E018}'
506-
| '\u{1E01B}'..='\u{1E021}'
507-
| '\u{1E023}'..='\u{1E024}'
508-
| '\u{1E026}'..='\u{1E02A}'
509-
| '\u{1E08F}'
510-
| '\u{1E130}'..='\u{1E136}'
511-
| '\u{1E2AE}'
512-
| '\u{1E2EC}'..='\u{1E2EF}'
513-
| '\u{1E4EC}'..='\u{1E4EF}'
514-
| '\u{1E8D0}'..='\u{1E8D6}'
515-
| '\u{1E944}'..='\u{1E94A}'
516-
| '\u{E0100}'..='\u{E01EF}' => true,
517-
_ => false,
518-
}
519-
}

0 commit comments

Comments
 (0)