#!/bin/bash # Given a decimal number start and end print all unicode codepoint. # If $3 is specified, it's used as the current column number. function print-decimal-unicode-range() { local start="$1" local end="$2" local continuedCount="$3" #echo "1 is $1" #echo "2 is $2" #echo "3 is $3" local counter=0 local count="${continuedCount:-0}" # Use alternating colors to see which symbols extend out of the bounding # box. local bgColor='\x1b[48;2;54;11;0m' local alternateBgColor='\x1b[48;2;0;54;11m' #local bgColor='\e[48;5;124m%03d' #local alternateBgColor='\e[48;5;202m%03d' local currentColor="${bgColor}" local reset_color='\e[0m' local allChars="${currentColor}" local allCodes="${currentColor}" local wrapAt=5 local topLine='╔══════╦══════╦══════╦══════╦══════╗' local bottomLine='╚══════╩══════╩══════╩══════╩══════╝' local line='╠══════╬══════╬══════╬══════╬══════╣' local bar='║' local originalSequence=($(seq "${start}" "${end}")) local originalSequenceLength=${#originalSequence[@]} local leftoverSpaces=$((wrapAt - (originalSequenceLength % wrapAt))) #printf "\nleftover is %s\n" "$leftoverSpaces" # add fillers to array to maintain table: if [[ "$leftoverSpaces" < "$wrapAt" ]]; then for i in $(seq 1 $leftoverSpaces); do #printf "adding a leftover\n" originalSequence+=(0) done fi local sequenceLength=${#originalSequence[@]} #printf "orig seq len %s" "$originalSequenceLength" #printf "\n" #printf "leftover is %s" "$leftoverSpaces" #printf "\n" #printf "seq len %s" "$sequenceLength" #printf "\n" #exit #printf "hey" printf "$topLine\n" #printf "║" for decimalCode in "${originalSequence[@]}"; do local hexCode=$(printf '%x' "${decimalCode}") local code="${hexCode}" local char="\u${hexCode}" #echo "hexcode was $hexCode" #echo -e "char was ${char}" # fill in placeholder cells properly formatted: if [ "${char}" = "\u0" ]; then #echo "IN IF char was '$char'" char=" " code=" " #else #echo "IN ELSE char was '$char'" fi allCodes+=" ${code} $bar" allChars+=" ${char} $bar" #echo -e "\ncount was $count" counter=$((counter + 1)) count=$(( (count + 1) % wrapAt)) #echo -e "\ncount was $count" #echo -e "\nwrap was $wrapAt" #echo -e "\nwrap-1 was $((wrapAt - 1))" #leftoverSpaces=$((wrapAt - count)) if [[ $count -eq 0 ]]; then #printf "║" #echo -e "\ncount is at zero\n" #echo -e "\nleftoversSpaces is $leftoverSpaces\n" if [[ "${currentColor}" = "${alternateBgColor}" ]]; then currentColor="${bgColor}" else currentColor="${alternateBgColor}" fi allCodes+="${currentColor}" allChars+="${currentColor}" printf "%s%b%b" "$bar" "$allCodes" "$reset_color" printf "\n" printf "%s%b%b" "$bar" "$allChars" "$reset_color" printf "\n" #printf "counter is %s" "$counter" if [ "$counter" != "$sequenceLength" ]; then printf "%s\n" $line fi allCodes="" allChars="" fi done printf "$bottomLine\n" # print left-overs: #leftoverSpaces=$((wrapAt - count)) # printf "${allCodes}${reset_color}" # printf "\n║${allChars}${reset_color}" # printf "\n" #printf "$bottomLine\n" #printf "count was %s" $count #printf "\nleftovers was %s" $leftoverSpaces #printf "${allChars}${reset_color}" } function print-unicode-ranges() { #local count=0 local arr=($@) local len=$# #echo "len was $len" for ((j=0; j