From da1b9279bab0dcc39b623bb02692f76bc05a9d7f Mon Sep 17 00:00:00 2001 From: lhess2021 Date: Mon, 28 Feb 2022 02:38:55 -0500 Subject: [PATCH] Add comments --- shell-scripts.d/xpath.sh | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/shell-scripts.d/xpath.sh b/shell-scripts.d/xpath.sh index a0c644d..979f54b 100755 --- a/shell-scripts.d/xpath.sh +++ b/shell-scripts.d/xpath.sh @@ -1,35 +1,38 @@ #!/bin/bash -# An interactive xpath query tool +# An interactive xpath query commandline tool. +# Stores your previous query. +# File for previous query touch .prev-xpath.tmp +# Colored output GREEN='\033[0;32m' NC='\033[0m' # no color +# Ask for canto file clear -read -p "Choose a canto: [i,r,p][1-34]" CANTO +read -p "Choose a canto: [i,r,p][1-34] " CANTO CANTICLE="$(echo $CANTO | tr -d -c a-z)" CANTO_NUM="$(echo $CANTO | tr -d -c 0-9)" -file="-${CANTO_NUM}.xml" - +# Create complete filename if [[ "$CANTICLE" == 'i' ]]; then CANTICLE='Inferno' - file="inferno${file}" + file="inferno-${CANTO_NUM}.xml" elif [[ "$CANTICLE" == 'r' ]]; then CANTICLE='Purgatorio' - file="purgatorio${file}" + file="purgatorio-${CANTO_NUM}.xml" elif [[ "$CANTICLE" == 'p' ]]; then CANTICLE='Paradiso' - file="paradiso${file}" + file="paradiso-${CANTO_NUM}.xml" else echo "Not a valid canto file: $file" fi +# Start interactive query if [[ -e "$file" ]]; then clear && echo -e "You are searching ${CANTICLE^} ${CANTO_NUM}.\nAdd a trailing slash ${GREEN}\`/\`${NC} to your search before submitting it. The default first two search choices are ${GREEN}\`canto\`${NC} and then ${GREEN}\`terzine\`${NC}. Press ${GREEN}${NC} for those defaults and type something else to search that.\n" - i='0' read -p "Load previous: (Y)/n " PREV case "$PREV" in N|n) @@ -39,19 +42,22 @@ if [[ -e "$file" ]]; then search="$(cat .prev-xpath.tmp)" ;; esac + i='0' + # Start while loop for the query. Break the loop if the query ends with a slash `/`. while true; do read -e -i "$search" -p "$(echo -e "\nSearch: \n "${GREEN}"===> "${NC})" nsearch - if [[ "${nsearch: -1}" == '/' ]]; then # if last char trailing slash then search - path="${nsearch::-1}" - echo "$path" > .prev-xpath.tmp # remove trailing slash - xmllint --xpath "$path" $file | batcat -l 'xml' + if [[ "${nsearch: -1}" == / ]]; then # if last char trailing slash then search + path="${nsearch::-1}" # remove trailing slash + echo "$path" > .prev-xpath.tmp # store query for next time + # perform the search (requires `xmllint` and `batcat` pager) + xmllint --xpath "$path" $file | batcat -l xml exit - elif [[ "$i" == '0' ]] && [[ "$nsearch" == '' ]]; then + elif [[ "$i" == 0 ]] && [[ "$nsearch" == '' ]]; then # load '/canto' query on first loop search="/canto" - elif [[ "$nsearch" == '/canto' ]]; then + elif [[ "$nsearch" == '/canto' ]]; then # load '/canto/terzine' on second loop search="/canto/terzine" else - search="${nsearch}" + search="${nsearch}" # else keep search the same fi i=$[$i+1] done