refactored teplate generation + added option to generate paths that graphicx can handle...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2023-09-04 20:16:31 +03:00
parent 14c62374ba
commit b21cc06599

View File

@ -132,6 +132,8 @@ printhelp(){
echo " - text spread default template (default: ${IMAGE_SPREAD[0]})." echo " - text spread default template (default: ${IMAGE_SPREAD[0]})."
echo " --captions PATH" echo " --captions PATH"
echo " - path to search for captions (default: $CAPTION_DIR)." echo " - path to search for captions (default: $CAPTION_DIR)."
echo " --graphicx-path"
echo " - use image basenames and let graphicx manage searching."
echo echo
echo "Parameters:" echo "Parameters:"
echo " PATH - path to root pages directory (default: $SPREADS_DIR)" echo " PATH - path to root pages directory (default: $SPREADS_DIR)"
@ -214,6 +216,11 @@ while true ; do
shift 2 shift 2
continue continue
;; ;;
--graphicx-path)
GRAPHICX_PATH=1
shift
continue
;;
# handle unknown options... # handle unknown options...
-*|--*) -*|--*)
@ -350,6 +357,12 @@ templateSlots(){
# usage: # usage:
# populateTemplate SPREAD TEMPLATE ITEMS... # populateTemplate SPREAD TEMPLATE ITEMS...
# #
# closure: $populateTemplate_img, $populateTemplate_txt
#
# NOTE: this is the least hacky/ugly but could not figure out a better
# way to update a list from within a function...
populateTemplate_img=
populateTemplate_txt=
populateTemplate(){ populateTemplate(){
local spread="$1" local spread="$1"
local tpl="$2" local tpl="$2"
@ -374,6 +387,16 @@ populateTemplate(){
txt+=("$elem") txt+=("$elem")
fi fi
done done
local global_img=
if ! [ -z $populateTemplate_img ] ; then
global_img=1
img=(${populateTemplate_img[@]})
fi
local global_txt=
if ! [ -z $populateTemplate_txt ] ; then
global_txt=1
txt=(${populateTemplate_txt[@]})
fi
local var local var
local val local val
@ -412,6 +435,9 @@ populateTemplate(){
text=$(echo "${text}" | \ text=$(echo "${text}" | \
sed "s/\${${var}}/${val%.*}/g") sed "s/\${${var}}/${val%.*}/g")
done done
if ! [ -z $global_img ] ; then
populateTemplate_img=("${populateTemplate_img[@]:$i}")
fi
# pass 2: captions... # pass 2: captions...
for var in ${slots[@]} ; do for var in ${slots[@]} ; do
@ -456,6 +482,9 @@ populateTemplate(){
text=$(echo "${text}" | \ text=$(echo "${text}" | \
sed "s/\${${var}}/${val}/g") sed "s/\${${var}}/${val}/g")
done done
if ! [ -z $global_txt ] ; then
populateTemplate_txt=("${txt[@]}")
fi
# print out the filled template... # print out the filled template...
echo % template: $tpl echo % template: $tpl
@ -468,7 +497,7 @@ populateTemplate(){
# usage: # usage:
# handleSpread SPREAD # handleSpread SPREAD
# #
# closure: $IMAGE_HIRES_DIR, $IMAGE_SPREAD # closure: $GRAPHICX_PATH, $IMAGE_HIRES_DIR, $IMAGE_SPREAD
handleSpread(){ handleSpread(){
local spread="$1" local spread="$1"
# skip non-spreads... # skip non-spreads...
@ -502,21 +531,32 @@ handleSpread(){
fi fi
done done
# graphicx paths...
if ! [ -z $GRAPHICX_PATH ] ; then
local C=0
for image in "${img[@]}" ; do
local new=`basename ${image}`
new="${new#+([0-9])-}"
img[$C]=$new
C=$(( C + 1 ))
done
# get hi-res image paths... # get hi-res image paths...
if ! [ -z $IMAGE_HIRES_DIR ] ; then elif ! [ -z $IMAGE_HIRES_DIR ] ; then
local C=0 local C=0
for image in "${img[@]}" ; do for image in "${img[@]}" ; do
# skip non-images... # skip non-images...
local new="$IMAGE_HIRES_DIR/`basename ${image/[0-9]-/}`" local new=`basename ${image}`
new="$IMAGE_HIRES_DIR/${new#+([0-9])-}"
# ignore file ext for availability test... # ignore file ext for availability test...
# NOTE: the first match may be an unsupported format... # NOTE: the first match may be an unsupported format...
new="${new%.*}" new="${new%.*}"
local target=$new
new=($new.*) new=($new.*)
if [ -e "${new[0]}" ] ; then if [ -e "${new[0]}" ] ; then
img[$C]=${new[0]} img[$C]=${new[0]}
else else
echo % echo %
echo "% WARNING: hi-res image not found for: \"${image}\" -> \"${new}\"" \ echo "% WARNING: hi-res image not found for: \"${image}\" -> \"${target}\"" \
| tee >(cat >&2) | tee >(cat >&2)
echo % echo %
fi fi
@ -565,43 +605,37 @@ handleSpread(){
cat "${template}" cat "${template}"
fi fi
fi fi
populateTemplate_img=("${img[@]}")
populateTemplate_txt=("${txt[@]}")
for elem in "${items[@]}" ; do for elem in "${items[@]}" ; do
C=$(( C + 1 )) C=$(( C + 1 ))
P=$([ $C == 1 ] \ P=$([ $C == 1 ] \
&& echo "left" \ && echo "left" \
|| echo "right") || echo "right")
# XXX need to use populateTemplate here...
# ...to do this need to somehow remove the used
# slots/files from list...
# image... # image...
if [[ "${elem,,}" =~ $IMAGE_FORMATS ]] ; then if [[ "${elem,,}" =~ $IMAGE_FORMATS ]] ; then
echo % echo %
echo "% $P page (image)..." echo "% $P page (image)..."
template=`getTemplate "$spread" "$IMAGE_PAGE"` template=`getTemplate "$spread" "$IMAGE_PAGE"`
echo % template: $template populateTemplate "$spread" "$template"
anotatePath "${elem}"
local caption=$(getCaption "$spread" "${elem}")
caption=$(readCaption "$caption")
cat "${template}" \
| sed -e "s%\${IMAGE0\?}%${elem%.*}%" \
-e "s%\${CAPTION0\?}%${caption}%"
# text... # text...
else else
echo % echo %
echo "% $P page (text)..." echo "% $P page (text)..."
template=$(getTemplate "$spread" "$TEXT_PAGE") template=$(getTemplate "$spread" "$TEXT_PAGE")
echo % template: $template populateTemplate "$spread" "$template"
cat "${template}" \
| sed "s%\${TEXT}%${elem}%"
fi fi
# reset for next page... # reset for next page...
template= template=
# ignore the rest of the items when we are done # ignore the rest of the items when we are done
# creating two pages... # creating two pages...
[ $C == 2 ] \ if [ $C == 2 ] ; then
&& return populateTemplate_img=
populateTemplate_txt=
return
fi
done done
fi fi
fi fi
@ -621,6 +655,8 @@ handleSpread(){
fi fi
fi fi
populateTemplate_img=
populateTemplate_txt=
populateTemplate "$spread" "$template" "${img[@]}" "${txt[@]}" populateTemplate "$spread" "$template" "${img[@]}" "${txt[@]}"
return $? return $?