diff --git a/custom-completions/nano/README.md b/custom-completions/nano/README.md new file mode 100644 index 00000000..3a23e310 --- /dev/null +++ b/custom-completions/nano/README.md @@ -0,0 +1,10 @@ +# `nano` custom completions + +This script provides custom completions for `nano`. +It can be used by importing its exported commands via: + +``` +use path/to/nano/nano-completions.nu * +``` + +With `path/to/` being either the relative path of the file to your current working directory or its absolute path. diff --git a/sourced/progress_bar/bar.nu b/sourced/progress_bar/bar.nu new file mode 100644 index 00000000..92a12b68 --- /dev/null +++ b/sourced/progress_bar/bar.nu @@ -0,0 +1,61 @@ +# construct bars based of a given percentage from a given width (5 is default) +# > bar 0.2 +# █ +# > bar 0.71 --width 10 +# ███████ +def 'bar' [ + percentage: float + --background (-b): string = 'default' + --foreground (-f): string = 'default' + --progress (-p) # output the result using 'print -n' with '\r' at the end + --width (-w): int = 5 +] { + let blocks = [null "▏" "▎" "▍" "▌" "▋" "▊" "▉" "█"] + let $whole_part = (($blocks | last) * ($percentage * $width // 1)) + let $fraction = ( + $blocks + | get ( + ($percentage * $width) mod 1 + | $in * ($blocks | length) + | math floor + ) + ) + + let $result = ( + $"($whole_part)($fraction)" + | fill -c $' ' -w $width + | $"(ansi -e {fg: ($foreground), bg: ($background)})($in)(ansi reset)" + ) + + if $progress { + print -n $"($result)\r" + } else { + $result + } +} + +def assert_eq [num: int, expected: string, input_1: float, input_2?] { + let actual = ( + if ($input_2 == null) {bar $input_1} else { + bar $input_1 --width $input_2 + } + ) + let span = (metadata $expected).span; + if $actual != $expected { + error make { + msg: "Actual != Expected", + label: { + text: $"expected ($expected) but got ($actual)", start: $span.start, end: $span.end + } + } + } else { + print $"Test ($num) (ansi green)passed(ansi reset) ✓" + } +} + +def bar_tests [] { + assert_eq 1 "▏ " 0.03 + assert_eq 2 "▎ " 0.03 10 + assert_eq 3 "▊" 0.71 1 + assert_eq 4 "███████ " 0.71 10 +}