#!/usr/bin/ksh

#-----------------------------------------------------
# affiche un newline
#-----------------------------------------------------
nl()
{
  printf "\n"
}

#-----------------------------------------------------
# affiche sur 3 digits et complete a gauche par des 0
#-----------------------------------------------------
print_3digits ()
{
  printf "3%02d" $1
}

#-----------------------------------------------------
# affiche une valeur en octets en ko
#-----------------------------------------------------
print_ko ()
{
 printf  $(($1/1024))
}

#-----------------------------------------------------
# affiche une valeur en octets en mo
#-----------------------------------------------------
print_mo_int ()
{
  printf  $(($1/1048576))
}

#-----------------------------------------------------
# affiche une valeur en octets en mo
#-----------------------------------------------------
print_mo ()
{
  echo $1 | awk '{printf ("%7.2f ",$1/1048576) }'
}

#-----------------------------------------------------
# affiche une valeur en octets en go
#-----------------------------------------------------
print_go_int ()
{
  printf $(($1/1073741824))
}

#-----------------------------------------------------
# affiche une valeur en octets en go
#-----------------------------------------------------
print_go ()
{
  echo $1 | awk '{printf ("%7.2f ",$1/1/1073741824) }'
}

#-----------------------------------------------------
# affiche une ligne
#-----------------------------------------------------
print_line ()
{
  printf '%60s\n' | tr ' ' $1 
}

function texte_en_boite_trait
{
  largeur=$1 # nom de variable plus clair
  limite=$(($largeur + 4)) # marge des deux cotes
  print -n -- "+" # non portable ?
  compteur=0
  while [ $compteur -lt $limite ] ; do
    print -n -- "-" # non portable ?
    compteur=$((compteur + 1))
  done
  print -- "+" # non portable ?
}

function texte_en_boite
{
  texte=${1:-"BOITE DE TEXTE"} # message par defaut
  taille=${#texte} # mesure de la taille
  texte_en_boite_trait $taille
  print "| " $texte " |"
  texte_en_boite_trait $taille
}

#===================================
# test
#===================================

verif()
{
  echo $*
  eval "$*"
  nl
  nl
}

fonction()
{
   print_line -
   echo $1
   print_line -
   nl
}

#-----------------------------------------------------
# jeu de test
#-----------------------------------------------------
test_lib()
{
  fonction print_3digits
  verif print_3digits 4
  verif print_3digits 34

  fonction print_line
  verif print_line -
  verif print_line .

  fonction texte_en_boite
  echo texte_en_boite "mon texte perso"
  texte_en_boite "mon texte perso"
  
  fonction print_ko print_mo
  verif print_ko 3486165432
  verif print_mo 3486165432
  verif print_mo_int 3486165432
  verif print_go 3486165432
  verif print_go_int 3486165432
}

#===================================
# main
#===================================
if [ "$1" == "-t" ] ; then
  test_lib
else
  cat << EOU
usage: lib_print -t test la librairie

librairie a inclure
EOU
fi
