From: Ian Jackson Date: Tue, 12 Jan 2021 18:28:37 +0000 (+0000) Subject: ui: Break out player_dasharray X-Git-Tag: otter-0.3.0~69 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=9b46c9034c655beac707696a10681e2cfe80251b;p=otter.git ui: Break out player_dasharray otterlib preview wants it Signed-off-by: Ian Jackson --- diff --git a/src/imports.rs b/src/imports.rs index c1fd183b..155f4f70 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -24,7 +24,7 @@ pub use std::iter; pub use std::iter::repeat_with; pub use std::marker::PhantomData; pub use std::mem; -pub use std::num::{TryFromIntError, Wrapping}; +pub use std::num::{NonZeroUsize, TryFromIntError, Wrapping}; pub use std::ops::{Deref, DerefMut}; pub use std::os::unix; pub use std::os::unix::ffi::OsStrExt; diff --git a/src/ui.rs b/src/ui.rs index 00ce792a..a411edba 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -16,6 +16,19 @@ pub enum PresentationLayout { type PL = PresentationLayout; +pub fn player_dasharray(player_num: NonZeroUsize) -> String { + let n: usize = player_num.into(); + let mut dasharray = String::with_capacity(n*3 + 4); + for dash in iter::once("3").chain( + iter::repeat("1").take(n-1)) + { + write!(&mut dasharray, "{} 1 ", &dash).unwrap(); + } + let spc = dasharray.pop(); + assert_eq!(spc,Some(' ')); + dasharray +} + impl PresentationLayout { pub fn template(self) -> &'static str { match self { diff --git a/src/updates.rs b/src/updates.rs index 4c38a646..9a0f4319 100644 --- a/src/updates.rs +++ b/src/updates.rs @@ -225,15 +225,7 @@ impl DataLoadPlayer { let n = kd.get_idx_version().0; let n = if n != 0 { n.try_into().unwrap() } else { ig.gs.players.capacity() }; - assert!(n != 0); - let mut dasharray = String::with_capacity(n*3 + 4); - for dash in iter::once("3").chain( - iter::repeat("1").take(n-1)) - { - write!(&mut dasharray, "{} 1 ", &dash).unwrap(); - } - let spc = dasharray.pop(); - assert_eq!(spc,Some(' ')); + let dasharray = player_dasharray(n.try_into().unwrap()); DataLoadPlayer { dasharray, }