mirror of
https://github.com/FliegendeWurst/cursive.git
synced 2024-11-27 11:16:03 +00:00
Fix utils::prefix
And add a few tests
This commit is contained in:
parent
b18ca17b73
commit
30cac851e7
@ -50,16 +50,12 @@ pub fn prefix<'a, I>(iter: I, available_width: usize, delimiter: &str) -> Prefix
|
|||||||
|
|
||||||
let mut current_width = 0;
|
let mut current_width = 0;
|
||||||
let sum = iter.take_while(|token| {
|
let sum = iter.take_while(|token| {
|
||||||
let needed_width = if current_width == 0 {
|
let width = token.width();
|
||||||
token.width()
|
if current_width + width > available_width {
|
||||||
} else {
|
|
||||||
// We also need to insert the delimiter, if not at the beginning.
|
|
||||||
token.width() + delimiter_width
|
|
||||||
};
|
|
||||||
if current_width + needed_width > available_width {
|
|
||||||
false
|
false
|
||||||
} else {
|
} else {
|
||||||
current_width += needed_width;
|
current_width += width;
|
||||||
|
current_width += delimiter_width;
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -70,7 +66,7 @@ pub fn prefix<'a, I>(iter: I, available_width: usize, delimiter: &str) -> Prefix
|
|||||||
// but only if the iterator was non empty.
|
// but only if the iterator was non empty.
|
||||||
let length = sum.saturating_sub(delimiter_len);
|
let length = sum.saturating_sub(delimiter_len);
|
||||||
|
|
||||||
debug_assert!(current_width <= available_width);
|
debug_assert!(current_width <= available_width + delimiter_width);
|
||||||
|
|
||||||
Prefix {
|
Prefix {
|
||||||
length: length,
|
length: length,
|
||||||
@ -98,3 +94,15 @@ pub fn suffix<'a, I>(iter: I, width: usize, delimiter: &str) -> Prefix
|
|||||||
pub fn simple_suffix(text: &str, width: usize) -> Prefix {
|
pub fn simple_suffix(text: &str, width: usize) -> Prefix {
|
||||||
suffix(text.graphemes(true), width, "")
|
suffix(text.graphemes(true), width, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use utils;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_prefix() {
|
||||||
|
assert_eq!(utils::prefix(" abra ".split(' '), 5, " ").length, 5);
|
||||||
|
assert_eq!(utils::prefix("abra a".split(' '), 5, " ").length, 4);
|
||||||
|
assert_eq!(utils::prefix("a a br".split(' '), 5, " ").length, 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user