rewrite nu shit
This commit is contained in:
parent
f64f61b9b6
commit
2ce0df9880
6 changed files with 101 additions and 96 deletions
72
modules/shell/nu/shell-startup.nu
Normal file
72
modules/shell/nu/shell-startup.nu
Normal file
|
@ -0,0 +1,72 @@
|
|||
def "is even" [] {
|
||||
$in mod 2 == 0
|
||||
}
|
||||
|
||||
# TODO: flag stuff as module to be used in other stuff in shell
|
||||
|
||||
const TRANS = [ 5BCEFA F5A9B8 FFFFFF F5A9B8 5BCEFA ];
|
||||
const LESBIAN = [ D52D00 EF7627 FF9A56 FFFFFF D162A4 B55690 A30262 ];
|
||||
const ENBY = [ FCF434 FFFFFF 9C59D1 2C2C2C ];
|
||||
|
||||
def flag [
|
||||
colors: list<string>
|
||||
character = "="
|
||||
width = -1,
|
||||
] {
|
||||
use std;
|
||||
|
||||
let out_size = if ($width == -1) {
|
||||
term size | get columns
|
||||
} else { $width };
|
||||
|
||||
let col_size = $out_size / ($colors | length) | math floor;
|
||||
mut rest = $out_size - ($col_size * ($colors | length));
|
||||
|
||||
mut cols = $colors | wrap color | insert width $col_size | flatten;
|
||||
let last = ($colors | length) - 1;
|
||||
|
||||
if not ($rest | is even) {
|
||||
$rest = $rest - 1;
|
||||
|
||||
$cols = (if not ($colors | length | is even) {
|
||||
$cols | update (($colors | length) / 2 | math floor) { $in | update width {|w| ($w.width + 1)}}
|
||||
} else {
|
||||
$cols | update $last { $in | update width {|w| ($w.width + 1)}}
|
||||
});
|
||||
};
|
||||
|
||||
std assert ($rest | is even);
|
||||
|
||||
let amount = $rest / 2;
|
||||
|
||||
$cols = ($cols | update 0 { $in | update width {|w| (($w.width | into int) + $amount) } } | update $last { $in | update width {|w| ($w.width + $amount) } });
|
||||
|
||||
$cols | each {|col|
|
||||
$character | std repeat ($col.width | into int) | prepend (ansi {fg: $"#($col.color)" }) | str join
|
||||
} | prepend (ansi attr_bold) | append (ansi reset) | str join
|
||||
}
|
||||
|
||||
def main [] {
|
||||
print (flag $LESBIAN);
|
||||
let next_events = open ~/Docs/dates.csv
|
||||
| update datetime {|ev| $ev.datetime | into datetime }
|
||||
| sort-by datetime
|
||||
| filter {|ev| ($ev.datetime > (date now))};
|
||||
|
||||
let evstr = if ($next_events | is-not-empty) {
|
||||
let ev = $next_events | first;
|
||||
$" | Next Event: (ansi attr_bold)($ev.event)(ansi reset) in (ansi attr_bold)(tfmt ($ev.datetime - (date now)))s(ansi reset)"
|
||||
} else "";
|
||||
|
||||
print $"Hi jade, you're on HRT for (ansi reset)(ansi attr_bold)((date now) - ('2024-02-18T20:53' | into datetime) | format duration month)s(ansi reset) now!($evstr)";
|
||||
}
|
||||
|
||||
def tfmt [dur: duration] {
|
||||
if ($dur < 1hr) {
|
||||
return ($dur | format duration min);
|
||||
} else if ($dur < 1day) {
|
||||
return ($dur | format duration hr);
|
||||
} else {
|
||||
return ($dur | format duration day);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue