mirror of
https://github.com/FliegendeWurst/cursive.git
synced 2024-11-23 17:35:00 +00:00
Rustfmt
This commit is contained in:
parent
158bc65c33
commit
51c6450688
@ -64,7 +64,7 @@ pub trait Backend {
|
|||||||
|
|
||||||
/// Main method used for printing
|
/// Main method used for printing
|
||||||
fn print_at(&self, pos: Vec2, text: &str);
|
fn print_at(&self, pos: Vec2, text: &str);
|
||||||
|
|
||||||
/// First positions the cursor, similar to `print_at`, and then prints the given number of
|
/// First positions the cursor, similar to `print_at`, and then prints the given number of
|
||||||
/// `repetitions` of `text`.
|
/// `repetitions` of `text`.
|
||||||
fn print_at_rep(&self, pos: Vec2, repetitions: usize, text: &str) {
|
fn print_at_rep(&self, pos: Vec2, repetitions: usize, text: &str) {
|
||||||
|
@ -276,8 +276,9 @@ impl backend::Backend for Backend {
|
|||||||
"{}{}",
|
"{}{}",
|
||||||
termion::cursor::Goto(1 + pos.x as u16, 1 + pos.y as u16),
|
termion::cursor::Goto(1 + pos.x as u16, 1 + pos.y as u16),
|
||||||
text
|
text
|
||||||
).unwrap();
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
let mut dupes_left = repetitions - 1;
|
let mut dupes_left = repetitions - 1;
|
||||||
while dupes_left > 0 {
|
while dupes_left > 0 {
|
||||||
write!(out, "{}", text).unwrap();
|
write!(out, "{}", text).unwrap();
|
||||||
|
@ -384,33 +384,39 @@ impl<T: 'static> SelectView<T> {
|
|||||||
fn focus(&self) -> usize {
|
fn focus(&self) -> usize {
|
||||||
self.focus.get()
|
self.focus.get()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sort the current items lexicographically by their label.
|
/// Sort the current items lexicographically by their label.
|
||||||
/// Note that this does not change the current focus index, which means that the current
|
/// Note that this does not change the current focus index, which means that the current
|
||||||
/// selection will likely be changed by the sorting.
|
/// selection will likely be changed by the sorting.
|
||||||
/// This sort is stable: items with identical label will not be reordered.
|
/// This sort is stable: items with identical label will not be reordered.
|
||||||
pub fn sort_by_label(&mut self) {
|
pub fn sort_by_label(&mut self) {
|
||||||
self.items.sort_by(|a, b| a.label.source().cmp(b.label.source()));
|
self.items
|
||||||
|
.sort_by(|a, b| a.label.source().cmp(b.label.source()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sort the current items with the given comparator function.
|
/// Sort the current items with the given comparator function.
|
||||||
/// Note that this does not change the current focus index, which means that the current
|
/// Note that this does not change the current focus index, which means that the current
|
||||||
/// selection will likely be changed by the sorting.
|
/// selection will likely be changed by the sorting.
|
||||||
/// The given comparator function must define a total order for the items.
|
/// The given comparator function must define a total order for the items.
|
||||||
/// If the comparator function does not define a total order, then the order after the sort is
|
/// If the comparator function does not define a total order, then the order after the sort is
|
||||||
/// unspecified.
|
/// unspecified.
|
||||||
/// This sort is stable: equal items will not be reordered.
|
/// This sort is stable: equal items will not be reordered.
|
||||||
pub fn sort_by<F>(&mut self, mut compare: F)
|
pub fn sort_by<F>(&mut self, mut compare: F)
|
||||||
where F: FnMut(&T, &T) -> Ordering {
|
where
|
||||||
|
F: FnMut(&T, &T) -> Ordering,
|
||||||
|
{
|
||||||
self.items.sort_by(|a, b| compare(&a.value, &b.value));
|
self.items.sort_by(|a, b| compare(&a.value, &b.value));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sort the current items with the given key extraction function.
|
/// Sort the current items with the given key extraction function.
|
||||||
/// Note that this does not change the current focus index, which means that the current
|
/// Note that this does not change the current focus index, which means that the current
|
||||||
/// selection will likely be changed by the sorting.
|
/// selection will likely be changed by the sorting.
|
||||||
/// This sort is stable: items with equal keys will not be reordered.
|
/// This sort is stable: items with equal keys will not be reordered.
|
||||||
pub fn sort_by_key<K, F>(&mut self, mut key_of: F)
|
pub fn sort_by_key<K, F>(&mut self, mut key_of: F)
|
||||||
where F: FnMut(&T) -> K, K: Ord {
|
where
|
||||||
|
F: FnMut(&T) -> K,
|
||||||
|
K: Ord,
|
||||||
|
{
|
||||||
self.items.sort_by_key(|item| key_of(&item.value));
|
self.items.sort_by_key(|item| key_of(&item.value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -700,7 +706,10 @@ impl SelectView<String> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: 'static> SelectView<T> where T: Ord {
|
impl<T: 'static> SelectView<T>
|
||||||
|
where
|
||||||
|
T: Ord,
|
||||||
|
{
|
||||||
/// Sort the current items by their natural ordering.
|
/// Sort the current items by their natural ordering.
|
||||||
/// Note that this does not change the current focus index, which means that the current
|
/// Note that this does not change the current focus index, which means that the current
|
||||||
/// selection will likely be changed by the sorting.
|
/// selection will likely be changed by the sorting.
|
||||||
@ -827,7 +836,7 @@ impl<T> Item<T> {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn select_view_sorting() {
|
fn select_view_sorting() {
|
||||||
// We add items in no particular order, from going by their label.
|
// We add items in no particular order, from going by their label.
|
||||||
@ -849,7 +858,7 @@ mod tests {
|
|||||||
view.on_event(Event::Key(Key::Down));
|
view.on_event(Event::Key(Key::Down));
|
||||||
assert_eq!(view.selection(), Some(Rc::new(String::from("Z"))));
|
assert_eq!(view.selection(), Some(Rc::new(String::from("Z"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn select_view_sorting_with_comparator() {
|
fn select_view_sorting_with_comparator() {
|
||||||
// We add items in no particular order, from going by their value.
|
// We add items in no particular order, from going by their value.
|
||||||
@ -871,19 +880,19 @@ mod tests {
|
|||||||
view.on_event(Event::Key(Key::Down));
|
view.on_event(Event::Key(Key::Down));
|
||||||
assert_eq!(view.selection(), Some(Rc::new(3)));
|
assert_eq!(view.selection(), Some(Rc::new(3)));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn select_view_sorting_by_key() {
|
fn select_view_sorting_by_key() {
|
||||||
// We add items in no particular order, from going by their key value.
|
// We add items in no particular order, from going by their key value.
|
||||||
#[derive(Eq, PartialEq, Debug)]
|
#[derive(Eq, PartialEq, Debug)]
|
||||||
struct MyStruct {
|
struct MyStruct {
|
||||||
key: i32
|
key: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut view = SelectView::new();
|
let mut view = SelectView::new();
|
||||||
view.add_item("Y", MyStruct{ key: 2 });
|
view.add_item("Y", MyStruct { key: 2 });
|
||||||
view.add_item("Z", MyStruct{ key: 1 });
|
view.add_item("Z", MyStruct { key: 1 });
|
||||||
view.add_item("X", MyStruct{ key: 3 });
|
view.add_item("X", MyStruct { key: 3 });
|
||||||
|
|
||||||
// Then sorting the list...
|
// Then sorting the list...
|
||||||
view.sort_by_key(|s| s.key);
|
view.sort_by_key(|s| s.key);
|
||||||
|
Loading…
Reference in New Issue
Block a user