diff --git a/scripts/center b/scripts/center new file mode 100755 index 0000000..2df5703 --- /dev/null +++ b/scripts/center @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Produces a centered text based on HRULEWIDTH environment variable. + +: "${HRULEWIDTH:=73}" + +_filter() { + [[ -n "$1" ]] && return 1 + while IFS= read -ra args; do + "${FUNCNAME[1]}" "${args[@]}" + done +} + +center() { + _filter "$@" && return $? + local str="$1" char="${2:- }" + local -i len=${#str} + local -i side=$((((HRULEWIDTH / 2) - len / 2) - 3)) + local -i left=$side + local -i right=$side + ((len % 2 == 1)) && ((right -= 1)) + echo "$pre $(echon "$char" "$left") "$str" $(echon "$char" "$right")" +} + +center "$@"