Migrate to rcm
This commit is contained in:
51
config/fish/functions/spark.fish
Normal file
51
config/fish/functions/spark.fish
Normal file
@@ -0,0 +1,51 @@
|
||||
set -g spark_version 1.0.0
|
||||
|
||||
complete -xc spark -n __fish_use_subcommand -a --help -d "Show usage help"
|
||||
complete -xc spark -n __fish_use_subcommand -a --version -d "$spark_version"
|
||||
complete -xc spark -n __fish_use_subcommand -a --min -d "Minimum range value"
|
||||
complete -xc spark -n __fish_use_subcommand -a --max -d "Maximum range value"
|
||||
|
||||
function spark -d "sparkline generator"
|
||||
if isatty
|
||||
switch "$argv"
|
||||
case {,-}-v{ersion,}
|
||||
echo "spark version $spark_version"
|
||||
case {,-}-h{elp,}
|
||||
echo "usage: spark [--min=<n> --max=<n>] <numbers...> Draw sparklines"
|
||||
echo "examples:"
|
||||
echo " spark 1 2 3 4"
|
||||
echo " seq 100 | sort -R | spark"
|
||||
echo " awk \\\$0=length spark.fish | spark"
|
||||
case \*
|
||||
echo $argv | spark $argv
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
command awk -v FS="[[:space:],]*" -v argv="$argv" '
|
||||
BEGIN {
|
||||
min = match(argv, /--min=[0-9]+/) ? substr(argv, RSTART + 6, RLENGTH - 6) + 0 : ""
|
||||
max = match(argv, /--max=[0-9]+/) ? substr(argv, RSTART + 6, RLENGTH - 6) + 0 : ""
|
||||
}
|
||||
{
|
||||
for (i = j = 1; i <= NF; i++) {
|
||||
if ($i ~ /^--/) continue
|
||||
if ($i !~ /^-?[0-9]/) data[count + j++] = ""
|
||||
else {
|
||||
v = data[count + j++] = int($i)
|
||||
if (max == "" && min == "") max = min = v
|
||||
if (max < v) max = v
|
||||
if (min > v ) min = v
|
||||
}
|
||||
}
|
||||
count += j - 1
|
||||
}
|
||||
END {
|
||||
n = split(min == max && max ? "▅ ▅" : "▁ ▂ ▃ ▄ ▅ ▆ ▇ █", blocks, " ")
|
||||
scale = (scale = int(256 * (max - min) / (n - 1))) ? scale : 1
|
||||
for (i = 1; i <= count; i++)
|
||||
out = out (data[i] == "" ? " " : blocks[idx = int(256 * (data[i] - min) / scale) + 1])
|
||||
print out
|
||||
}
|
||||
'
|
||||
end
|
||||
Reference in New Issue
Block a user