#! /bin/bash -ue
# Last edited on 2025-05-04 22:45:00 by stolfi

usage="$0 BOOK_DIR SEC..."

# Computes the number of raw/good/bad tokens and lexemes in 
# text subset BOOK_DIR (usually gen/LANG/BOOK), in the listed sections
# (such as "hea.1", "unk.5", etc.) A SEC can be "/" meaning a break in the table.

if [[ $# -lt 2 ]]; then
  echo "usage: ${usage}" 1>&2; exit 1
fi

gen_book_dir="$1"; shift;
secs=( "$@" )

printf "#                    tokens                         lexemes           \n"
printf "#         -------------------------------  -------------------------------\n"
printf "# sec       raw    gud   ppt    bad   ppt    raw    gud   ppt    bad   ppt\n"
printf "# ------  -----  ----- -----  ----- -----  -----  ----- -----  ----- -----\n"

for sec in ${secs[@]}; do

  if [[ "@${sec}" == "@/" ]]; then
    echo "/"
  else
    firaw="${gen_book_dir}/${sec}/raw.wfr"
    wdraw=`cat ${firaw} | wc -l`
    tkraw=`cat ${firaw} | gawk 'BEGIN{s=0} /./{s+=$1;} END{print s;}'`

    figud="${gen_book_dir}/${sec}/gud.wfr"
    wdgud=`cat ${figud} | wc -l`
    tkgud=`cat ${figud} | gawk 'BEGIN{s=0} /./{s+=$1;} END{print s;}'`

    fibad="${gen_book_dir}/${sec}/bad.wfr"
    wdbad=`cat ${fibad} | wc -l`
    tkbad=`cat ${fibad} | gawk 'BEGIN{s=0} /./{s+=$1;} END{print s;}'`
    
    # echo "${wdraw}, ${tkraw}, ${wdgud}, ${tkgud}, ${wdbad}, ${tkbad}" 1>&2 

    tkgudpc=`echo "(100.0 * ${tkgud})/(${tkraw} + 1)" | bc -lq`
    tkbadpc=`echo "(100.0 * ${tkbad})/(${tkraw} + 1)" | bc -lq`
    wdgudpc=`echo "(100.0 * ${wdgud})/(${wdraw} + 1)" | bc -lq`
    wdbadpc=`echo "(100.0 * ${wdbad})/(${wdraw} + 1)" | bc -lq`
    printf "  %-6s  %5d  %5d %5.1f  %5d %5.1f  %5d  %5d %5.1f  %5d %5.1f\n" "${sec}" \
        "${tkraw}" "${tkgud}" "${tkgudpc}" "${tkbad}" "${tkbadpc}" \
        "${wdraw}" "${wdgud}" "${wdgudpc}" "${wdbad}" "${wdbadpc}"
  fi
done
