diff options
| author | Fuwn <[email protected]> | 2021-05-20 17:05:59 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2021-05-20 17:05:59 +0000 |
| commit | 9dbc613765de8ab7dfa8e1374cf6661dcfd56bc8 (patch) | |
| tree | 8cfff6a23bb72db2660e68c63a8cf9d0539a061f /crates/whirl_common/src | |
| parent | feat(readme): add sqlfluff as a dev dep (diff) | |
| download | whirl-9dbc613765de8ab7dfa8e1374cf6661dcfd56bc8.tar.xz whirl-9dbc613765de8ab7dfa8e1374cf6661dcfd56bc8.zip | |
refactor(global): move crates around, stricter module isolation
Diffstat (limited to 'crates/whirl_common/src')
| -rw-r--r-- | crates/whirl_common/src/lib.rs | 16 | ||||
| -rw-r--r-- | crates/whirl_common/src/log.rs | 19 | ||||
| -rw-r--r-- | crates/whirl_common/src/sort.rs | 6 | ||||
| -rw-r--r-- | crates/whirl_common/src/system.rs | 38 |
4 files changed, 79 insertions, 0 deletions
diff --git a/crates/whirl_common/src/lib.rs b/crates/whirl_common/src/lib.rs new file mode 100644 index 0000000..05a0e0c --- /dev/null +++ b/crates/whirl_common/src/lib.rs @@ -0,0 +1,16 @@ +// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective +// SPDX-License-Identifier: GPL-3.0-only + +#![feature( + type_ascription, + hash_set_entry, + type_name_of_val, + decl_macro, + proc_macro_hygiene +)] +#![warn(rust_2018_idioms)] +#![recursion_limit = "128"] + +pub mod log; +pub mod sort; +pub mod system; diff --git a/crates/whirl_common/src/log.rs b/crates/whirl_common/src/log.rs new file mode 100644 index 0000000..39ceca0 --- /dev/null +++ b/crates/whirl_common/src/log.rs @@ -0,0 +1,19 @@ +// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective +// SPDX-License-Identifier: GPL-3.0-only + +use whirl_config::Config; + +pub fn calculate_log_level() -> String { + let mut level; + + level = match Config::get().whirlsplash.log.level { + 2 => "debug".to_string(), + 3 => "trace".to_string(), + _ => "info".to_string(), + }; + if !Config::get().whirlsplash.log.everything { + level = format!("whirl={}", level); + } + + level +} diff --git a/crates/whirl_common/src/sort.rs b/crates/whirl_common/src/sort.rs new file mode 100644 index 0000000..131fa55 --- /dev/null +++ b/crates/whirl_common/src/sort.rs @@ -0,0 +1,6 @@ +// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective +// SPDX-License-Identifier: GPL-3.0-only + +pub fn sort_vec_alphabetically(vec: &mut Vec<&str>) { + vec.sort_by(|a, b| a.to_lowercase().cmp(&b.to_lowercase())); +} diff --git a/crates/whirl_common/src/system.rs b/crates/whirl_common/src/system.rs new file mode 100644 index 0000000..7a823a0 --- /dev/null +++ b/crates/whirl_common/src/system.rs @@ -0,0 +1,38 @@ +// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective +// SPDX-License-Identifier: GPL-3.0-only + +const WEEK: usize = 60 * 60 * 60 * 60; +const DAY: usize = 60 * 60 * 60; +const HOUR: usize = 60 * 60; +const MIN: usize = 60; + +fn make_parts(t: usize, steps: &[usize], mut accum: Vec<usize>) -> Vec<usize> { + match steps.split_first() { + None => accum, + Some((s, steps)) => { + accum.push(t / *s); + make_parts(t % *s, steps, accum) + } + } +} + +pub fn seconds_to_hrtime(seconds: usize) -> String { + let word = ["week", "day", "hour", "min", "sec"]; + + make_parts(seconds, &[WEEK, DAY, HOUR, MIN, 1], Vec::new()) + .iter() + .enumerate() + .filter_map(|(i, s)| { + if s > &0 { + if s > &1 { + Some(format!("{} {}s", s, word[i])) + } else { + Some(format!("{} {}", s, word[i])) + } + } else { + None + } + }) + .collect::<Vec<String>>() + .join(", ") +} |