local re='^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?'
[[ $2 =~ $re ]] || return $?
- local scheme="${BASH_REMATCH[2]}"
- local authority="${BASH_REMATCH[4]}"
- local path="${BASH_REMATCH[5]}"
- local query="${BASH_REMATCH[7]}"
- local fragment="${BASH_REMATCH[9]}"
+ # shellcheck disable=2034
+ local scheme="${BASH_REMATCH[2]}" \
+ authority="${BASH_REMATCH[4]}" \
+ path="${BASH_REMATCH[5]}" \
+ query="${BASH_REMATCH[7]}" \
+ fragment="${BASH_REMATCH[9]}"
# 0=url 1=scheme 2=authority 3=path 4=query 5=fragment
local i=1 c
if [[ "${!c}" || "$c" == path ]]; then
printf -v "$1[$i]" '%s' "${!c}"
else
+ # shellcheck disable=2059
printf -v "$1[$i]" "$UC_BLANK"
fi
((i += 1))
done
+ # shellcheck disable=2059
printf -v "$1[0]" "$(ujoin "$1")" # inefficient I'm sure
}