From 2c0d38fd8b8e21e84fad2afffc5e9fee2fba2501 Mon Sep 17 00:00:00 2001 From: Rob Muhlestein Date: Fri, 30 Jun 2023 20:33:30 -0400 Subject: [PATCH] feat: add center --- scripts/center | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 scripts/center 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 "$@"