From e39410c37fa0cc4779b4c454dcdb61fb81614d7a Mon Sep 17 00:00:00 2001 From: YgorSouza <43298013+YgorSouza@users.noreply.github.com> Date: Tue, 2 Aug 2022 20:35:25 +0200 Subject: [PATCH] Make EasyMark numbered lists allow more than 2 digits (#1826) Co-authored-by: Ygor Souza --- .../src/easy_mark/easy_mark_parser.rs | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/egui_demo_lib/src/easy_mark/easy_mark_parser.rs b/egui_demo_lib/src/easy_mark/easy_mark_parser.rs index 3d64d12c..75d8135d 100644 --- a/egui_demo_lib/src/easy_mark/easy_mark_parser.rs +++ b/egui_demo_lib/src/easy_mark/easy_mark_parser.rs @@ -101,27 +101,13 @@ impl<'a> Parser<'a> { /// `1. `, `42. ` etc. fn numbered_list(&mut self) -> Option> { - let bytes = self.s.as_bytes(); - // 1. numbered bullet - if bytes.len() >= 3 && bytes[0].is_ascii_digit() && bytes[1] == b'.' && bytes[2] == b' ' { - let number = &self.s[0..1]; - self.s = &self.s[3..]; + let n_digits = self.s.chars().take_while(|c| c.is_ascii_digit()).count(); + if n_digits > 0 && self.s.chars().skip(n_digits).take(2).eq(". ".chars()) { + let number = &self.s[..n_digits]; + self.s = &self.s[(n_digits + 2)..]; self.start_of_line = false; return Some(Item::NumberedPoint(number)); } - // 42. double-digit numbered bullet - if bytes.len() >= 4 - && bytes[0].is_ascii_digit() - && bytes[1].is_ascii_digit() - && bytes[2] == b'.' - && bytes[3] == b' ' - { - let number = &self.s[0..2]; - self.s = &self.s[4..]; - self.start_of_line = false; - return Some(Item::NumberedPoint(number)); - } - // There is no triple-digit numbered bullet. Please don't make numbered lists that long. None }