summaryrefslogtreecommitdiff
path: root/.config/fish/functions/spark.fish
diff options
context:
space:
mode:
Diffstat (limited to '.config/fish/functions/spark.fish')
-rw-r--r--.config/fish/functions/spark.fish33
1 files changed, 33 insertions, 0 deletions
diff --git a/.config/fish/functions/spark.fish b/.config/fish/functions/spark.fish
new file mode 100644
index 00000000..0bbe6ff0
--- /dev/null
+++ b/.config/fish/functions/spark.fish
@@ -0,0 +1,33 @@
+function spark --description Sparklines
+ argparse --ignore-unknown --name=spark v/version h/help m/min= M/max= -- $argv || return
+
+ if set --query _flag_version[1]
+ echo "spark, version 1.1.0"
+ else if set --query _flag_help[1]
+ echo "Usage: spark <numbers ...>"
+ echo " stdin | spark"
+ echo "Options:"
+ echo " --min=<number> Minimum range"
+ echo " --max=<number> Maximum range"
+ echo " -v or --version Print version"
+ echo " -h or --help Print this help message"
+ echo "Examples:"
+ echo " spark 1 1 2 5 14 42"
+ echo " seq 64 | sort --random-sort | spark"
+ else if set --query argv[1]
+ printf "%s\n" $argv | spark --min="$_flag_min" --max="$_flag_max"
+ else
+ command awk -v min="$_flag_min" -v max="$_flag_max" '
+ {
+ m = min == "" ? m == "" ? $0 : m > $0 ? $0 : m : min
+ M = max == "" ? M == "" ? $0 : M < $0 ? $0 : M : max
+ nums[NR] = $0
+ }
+ END {
+ n = split("▁ ▂ ▃ ▄ ▅ ▆ ▇ █", sparks, " ") - 1
+ while (++i <= NR)
+ printf("%s", sparks[(M == m) ? 3 : sprintf("%.f", (1 + (nums[i] - m) * n / (M - m)))])
+ }
+ ' && echo
+ end
+end