#!/bin/sh
#
# Print a Pascal file on the local printer or screen using a2ps or alternative
#

SCREEN=0

if [ "$1" = "-s" ]; then
    # there are alternatives to ghostscript, eg okular, evince
    if which okular >/dev/null 2>&1 ; then
        PPR_VIEW=okular
    elif which evince >/dev/null 2>&1 ; then
        PPR_VIEW=evince
    elif which gs >/dev/null 2>&1 ; then
        PPR_VIEW=gs
    else
        echo "$0: can't find okular, evince or ghostscript for screen output"
        exit 1
    fi
    #echo "$0: screen output"
    SCREEN=1
    shift
fi

# show brief help if no program specified on command line
if [ -z "$1" ]
then
   echo 'format & print a pascal file'
   echo usage:
   echo "  $0 [-s] 'file'"
   echo "  where:"
   echo "    -s is optional parameter to print to screen"
   echo "    file is a pascal file, with or without the extension (.pas or .p)"
   exit 0
fi

if [ -f $1 ] && [ "`basename $1 .PAS`.PAS" = "`basename $1`" ] ; then
    PASFILE=`dirname $1`/`basename $1 .PAS`
    EXT=PAS
elif [ -f $1 ] && [ "`basename $1 .pas`.pas" = "`basename $1`" ] ; then
    PASFILE=`dirname $1`/`basename $1 .pas`
    EXT=pas
elif [ -f $1 ] && [ `basename $1 .p`.p = "`basename $1`" ] ; then
    PASFILE=`dirname $1`/`basename $1 .p`
    EXT=p
elif [ -f $1 ] && [ `basename $1 .pp`.pp = "`basename $1`" ] ; then
    PASFILE=`dirname $1`/`basename $1 .pp`
    EXT=pp
elif [ -f $1.pas ] ; then
    PASFILE=$1;
    EXT=pas
elif [ -f $1.p ] ; then
    PASFILE=$1;
    EXT=p
elif [ -f $1.pp ] ; then
    PASFILE=$1;
    EXT=pp
else
    echo "$0: can't find $1 or $1.pas or $1.pp or $1.p"
    exit 1
fi

if which a2ps >/dev/null 2>&1 ; then
    if [ ! -e $P5CDIR/p5c.ssh ]; then
       echo "$0: can't find p5c style sheet - is \$P5CDIR set?"
       exit 1
    fi

    # a2ps can be highly customised
    # edit these options for your required output style
    # type info a2ps to get info about other options
    # --printer=display shows output on screen
    PPR_CMD="a2ps --verbose  --pretty-print=$P5CDIR/p5c.ssh \
         --borders=no --prologue=color --highlight-level=normal \
         --center-title --left-title --right-title \
        --portrait --columns=1 --rows=1 --header=$PASFILE.$EXT "

elif which enscript >/dev/null 2>&1 ; then

    PPR_CMD="enscript -E --color"

else
    # printing programs a2ps & enscript not found ==> try pr
    if [ $SCREEN -eq 1 ]; then
        pr $PASFILE.$EXT | less
    else
        pr $PASFILE.$EXT | lpr
    fi
    exit 0
fi



if [ $SCREEN -eq 1 ]; then
    PPR_TEMP=$(mktemp)
    $PPR_CMD -o - $PASFILE.$EXT > $PPR_TEMP && $PPR_VIEW $PPR_TEMP
    rm $PPR_TEMP
else
    $PPR_CMD $PASFILE.$EXT
fi
