mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 14:20:04 -04:00
Use a lot more let-else (#7582)
This commit is contained in:
@@ -421,10 +421,11 @@ mod tests {
|
||||
}
|
||||
|
||||
fn remove_leading_emoji(full_name: &str) -> &str {
|
||||
if let Some((start, name)) = full_name.split_once(' ') {
|
||||
if start.len() <= 4 && start.bytes().next().is_some_and(|byte| byte >= 128) {
|
||||
return name;
|
||||
}
|
||||
if let Some((start, name)) = full_name.split_once(' ')
|
||||
&& start.len() <= 4
|
||||
&& start.bytes().next().is_some_and(|byte| byte >= 128)
|
||||
{
|
||||
return name;
|
||||
}
|
||||
full_name
|
||||
}
|
||||
|
||||
@@ -336,5 +336,5 @@ fn long_text(row_index: usize) -> String {
|
||||
}
|
||||
|
||||
fn thick_row(row_index: usize) -> bool {
|
||||
row_index % 6 == 0
|
||||
row_index.is_multiple_of(6)
|
||||
}
|
||||
|
||||
@@ -67,10 +67,9 @@ impl crate::View for ClipboardTest {
|
||||
|
||||
if let Ok(egui::load::ImagePoll::Ready { image }) =
|
||||
ui.ctx().try_load_image(&uri, Default::default())
|
||||
&& ui.button("📋").clicked()
|
||||
{
|
||||
if ui.button("📋").clicked() {
|
||||
ui.ctx().copy_image((*image).clone());
|
||||
}
|
||||
ui.ctx().copy_image((*image).clone());
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -12,11 +12,11 @@ struct DeduplicatedHistory {
|
||||
|
||||
impl DeduplicatedHistory {
|
||||
fn add(&mut self, summary: String, full: String) {
|
||||
if let Some(entry) = self.history.back_mut() {
|
||||
if entry.summary == summary {
|
||||
entry.entries.push(full);
|
||||
return;
|
||||
}
|
||||
if let Some(entry) = self.history.back_mut()
|
||||
&& entry.summary == summary
|
||||
{
|
||||
entry.entries.push(full);
|
||||
return;
|
||||
}
|
||||
self.history.push_back(HistoryEntry {
|
||||
summary,
|
||||
|
||||
@@ -10,11 +10,11 @@ struct DeduplicatedHistory {
|
||||
|
||||
impl DeduplicatedHistory {
|
||||
fn add(&mut self, text: String) {
|
||||
if let Some(entry) = self.history.back_mut() {
|
||||
if entry.text == text {
|
||||
entry.repeated += 1;
|
||||
return;
|
||||
}
|
||||
if let Some(entry) = self.history.back_mut()
|
||||
&& entry.text == text
|
||||
{
|
||||
entry.repeated += 1;
|
||||
return;
|
||||
}
|
||||
self.history.push_back(HistoryEntry { text, repeated: 1 });
|
||||
if self.history.len() > 100 {
|
||||
|
||||
@@ -65,20 +65,20 @@ impl crate::View for TextEditDemo {
|
||||
egui::Label::new("Press ctrl+Y to toggle the case of selected text (cmd+Y on Mac)"),
|
||||
);
|
||||
|
||||
if ui.input_mut(|i| i.consume_key(egui::Modifiers::COMMAND, egui::Key::Y)) {
|
||||
if let Some(text_cursor_range) = output.cursor_range {
|
||||
use egui::TextBuffer as _;
|
||||
let selected_chars = text_cursor_range.as_sorted_char_range();
|
||||
let selected_text = text.char_range(selected_chars.clone());
|
||||
let upper_case = selected_text.to_uppercase();
|
||||
let new_text = if selected_text == upper_case {
|
||||
selected_text.to_lowercase()
|
||||
} else {
|
||||
upper_case
|
||||
};
|
||||
text.delete_char_range(selected_chars.clone());
|
||||
text.insert_text(&new_text, selected_chars.start);
|
||||
}
|
||||
if ui.input_mut(|i| i.consume_key(egui::Modifiers::COMMAND, egui::Key::Y))
|
||||
&& let Some(text_cursor_range) = output.cursor_range
|
||||
{
|
||||
use egui::TextBuffer as _;
|
||||
let selected_chars = text_cursor_range.as_sorted_char_range();
|
||||
let selected_text = text.char_range(selected_chars.clone());
|
||||
let upper_case = selected_text.to_uppercase();
|
||||
let new_text = if selected_text == upper_case {
|
||||
selected_text.to_lowercase()
|
||||
} else {
|
||||
upper_case
|
||||
};
|
||||
text.delete_char_range(selected_chars.clone());
|
||||
text.insert_text(&new_text, selected_chars.start);
|
||||
}
|
||||
|
||||
ui.horizontal(|ui| {
|
||||
|
||||
@@ -60,15 +60,11 @@ impl crate::View for UndoRedoDemo {
|
||||
let undo = ui.add_enabled(can_undo, Button::new("⟲ Undo")).clicked();
|
||||
let redo = ui.add_enabled(can_redo, Button::new("⟳ Redo")).clicked();
|
||||
|
||||
if undo {
|
||||
if let Some(undo_text) = self.undoer.undo(&self.state) {
|
||||
self.state = undo_text.clone();
|
||||
}
|
||||
if undo && let Some(undo_text) = self.undoer.undo(&self.state) {
|
||||
self.state = undo_text.clone();
|
||||
}
|
||||
if redo {
|
||||
if let Some(redo_text) = self.undoer.redo(&self.state) {
|
||||
self.state = redo_text.clone();
|
||||
}
|
||||
if redo && let Some(redo_text) = self.undoer.redo(&self.state) {
|
||||
self.state = redo_text.clone();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -96,13 +96,13 @@ impl EasyMarkEditor {
|
||||
ui.add(egui::TextEdit::multiline(code).desired_width(f32::INFINITY))
|
||||
};
|
||||
|
||||
if let Some(mut state) = TextEdit::load_state(ui.ctx(), response.id) {
|
||||
if let Some(mut ccursor_range) = state.cursor.char_range() {
|
||||
let any_change = shortcuts(ui, code, &mut ccursor_range);
|
||||
if any_change {
|
||||
state.cursor.set_char_range(Some(ccursor_range));
|
||||
state.store(ui.ctx(), response.id);
|
||||
}
|
||||
if let Some(mut state) = TextEdit::load_state(ui.ctx(), response.id)
|
||||
&& let Some(mut ccursor_range) = state.cursor.char_range()
|
||||
{
|
||||
let any_change = shortcuts(ui, code, &mut ccursor_range);
|
||||
if any_change {
|
||||
state.cursor.set_char_range(Some(ccursor_range));
|
||||
state.store(ui.ctx(), response.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,19 +113,19 @@ impl<'a> Parser<'a> {
|
||||
|
||||
// ```{language}\n{code}```
|
||||
fn code_block(&mut self) -> Option<Item<'a>> {
|
||||
if let Some(language_start) = self.s.strip_prefix("```") {
|
||||
if let Some(newline) = language_start.find('\n') {
|
||||
let language = &language_start[..newline];
|
||||
let code_start = &language_start[newline + 1..];
|
||||
if let Some(end) = code_start.find("\n```") {
|
||||
let code = &code_start[..end].trim();
|
||||
self.s = &code_start[end + 4..];
|
||||
self.start_of_line = false;
|
||||
return Some(Item::CodeBlock(language, code));
|
||||
} else {
|
||||
self.s = "";
|
||||
return Some(Item::CodeBlock(language, code_start));
|
||||
}
|
||||
if let Some(language_start) = self.s.strip_prefix("```")
|
||||
&& let Some(newline) = language_start.find('\n')
|
||||
{
|
||||
let language = &language_start[..newline];
|
||||
let code_start = &language_start[newline + 1..];
|
||||
if let Some(end) = code_start.find("\n```") {
|
||||
let code = &code_start[..end].trim();
|
||||
self.s = &code_start[end + 4..];
|
||||
self.start_of_line = false;
|
||||
return Some(Item::CodeBlock(language, code));
|
||||
} else {
|
||||
self.s = "";
|
||||
return Some(Item::CodeBlock(language, code_start));
|
||||
}
|
||||
}
|
||||
None
|
||||
@@ -171,14 +171,14 @@ impl<'a> Parser<'a> {
|
||||
let this_line = &self.s[..self.s.find('\n').unwrap_or(self.s.len())];
|
||||
if let Some(bracket_end) = this_line.find(']') {
|
||||
let text = &this_line[1..bracket_end];
|
||||
if this_line[bracket_end + 1..].starts_with('(') {
|
||||
if let Some(parens_end) = this_line[bracket_end + 2..].find(')') {
|
||||
let parens_end = bracket_end + 2 + parens_end;
|
||||
let url = &self.s[bracket_end + 2..parens_end];
|
||||
self.s = &self.s[parens_end + 1..];
|
||||
self.start_of_line = false;
|
||||
return Some(Item::Hyperlink(self.style, text, url));
|
||||
}
|
||||
if this_line[bracket_end + 1..].starts_with('(')
|
||||
&& let Some(parens_end) = this_line[bracket_end + 2..].find(')')
|
||||
{
|
||||
let parens_end = bracket_end + 2 + parens_end;
|
||||
let url = &self.s[bracket_end + 2..parens_end];
|
||||
self.s = &self.s[parens_end + 1..];
|
||||
self.start_of_line = false;
|
||||
return Some(Item::Hyperlink(self.style, text, url));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user