#! /bin/sh

# $Id: sgml2any,v 1.24 2001/11/01 10:44:43 tobotras Exp $

# ----- Global paremeters

if [ -z "$COSTSH" ]; then
	COSTSH=costsh
fi
NSGMLS="nsgmls -E 100000"
if [ -z "$INCLUDES" ]; then
	INCLUDES=""
fi

defineParameter () {
    INCLUDES="${INCLUDES} -i`echo $1 | tr -d '_'`"
}

if [ "$SGML_PARSER" != "" ]; then
    NSGMLS=$SGML_PARSER
fi

if [ "$USER" = "" ]; then
    if [ "$LOGNAME" != "" ]; then
	USER=$LOGNAME
    else
	USER=nobody
    fi
    export USER
fi

if [ -z "$SGML_HOME" ]; then
    SGML_HOME=${HOME}/lib/TEItools
fi

if [ ! -d $SGML_HOME ]; then
    SGML_HOME=/usr/local/lib/TEItools
fi

SITE_PATH=${SGML_HOME}/site

if [ -z "$SGML_DECL" ]; then
    if [ -r ${SITE_PATH}/dtd/teitools.decl ]; then
	SGML_DECL=${SITE_PATH}/dtd/teitools.decl
    else
	SGML_DECL=${SGML_HOME}/dtd/teitools.decl
    fi
fi

BACKEND=`echo $0 | cut -d2 -f2`
DTD=`basename $0 | cut -d2 -f1`

if [ -z "$BACKEND" -o -z "$DTD" ]; then
  echo 'This script should be named <dtd>2<something>'
  exit 1
fi

FRONTEND=${SGML_HOME}/${DTD}
SCRIPT_HOME=${FRONTEND}/${BACKEND}; export SCRIPT_HOME
SGML_SEARCH_PATH=.:${SITE_PATH}/dtd:${SITE_PATH}/${DTD}/${BACKEND}:${SGML_HOME}/dtd:${FRONTEND}/${BACKEND}
export SGML_SEARCH_PATH

if [ "${BACKEND}" != "esis" ]; then
    SCRIPT_DIR=${SITE_PATH}/${DTD}/${BACKEND}
    SCRIPT=${SCRIPT_DIR}/script
    if [ ! -r ${SCRIPT} ]; then
	OLD_SCRIPT=${SCRIPT}
	SCRIPT_DIR=${SGML_HOME}/${DTD}/${BACKEND}
	SCRIPT=${SCRIPT_DIR}/script
	if [ ! -r ${SCRIPT} ]; then
	    echo "Cannot find script for ${DTD}-to-${BACKEND} conversion"
	    echo "Tried ${OLD_SCRIPT} and ${SCRIPT}."
	    exit 1
        fi
    else
	SCRIPT_HOME=${SCRIPT_DIR}
    fi
fi

defineParameter $BACKEND

SGML_CATALOG_FILES=catalog:CATALOG:${SITE_PATH}/dtd/catalog:${SGML_HOME}/dtd/catalog
export SGML_CATALOG_FILES
COSTLIB=${SGML_HOME}/cost; export COSTLIB
COSTPATH=${SGML_HOME}/lib:${SGML_SEARCH_PATH}; export COSTPATH

if [ $# -eq 0 ]; then
  echo "Usage: `basename $0` file [-style name[=value] [-style name[=value]]...] [options...]"
  exit 1
fi

FILE=$1
shift

if [ ! -r $FILE ]; then
  FILE=${FILE}.${DTD}
fi

if [ ! -r ${FILE} ]; then
  echo "Cannot open ${FILE}"
  exit 1
fi

SUFFIX=.`echo $FILE | awk 'BEGIN{FS="."} {print $NF}'`
BASE=`basename $FILE $SUFFIX`

if [ "${BACKEND}" != "esis" ]; then
  TMP_SCRIPT=/tmp/sgml2any.script.$$
  rm -f ${TMP_SCRIPT}
  touch ${TMP_SCRIPT}

  cat <<EOF >> ${TMP_SCRIPT}
require TEItools.tcl
set TEItools_style_search_path {`pwd`:${SITE_PATH}/${DTD}/${BACKEND}/styles:${SGML_HOME}/${DTD}/${BACKEND}/styles}

EOF

  while [ "$1" = "-style" ]; do
    echo "TEItools_load_style \"$2\"" >> ${TMP_SCRIPT}

    for stylename in `echo $2 | sed -e 's/,/ /g'`; do
	echo $stylename | grep "=" > /dev/null
	if [ $? -ne 0 ]; then
	    defineParameter $stylename
	fi
    done

    shift; shift
  done

    echo "puts {}" >> ${TMP_SCRIPT}
    echo "set TEItools_backend $BACKEND" >> ${TMP_SCRIPT}
    

  cat ${SCRIPT} >> ${TMP_SCRIPT}
  
  echo >> ${TMP_SCRIPT}

  echo "TEItools_execute_style_scripts" >> ${TMP_SCRIPT}

  if [ -z "${TEITOOLS_USE_XML}" ]; then
       echo "Parsing SGML..."
       ${NSGMLS} ${INCLUDES} ${SGML_DECL} ${NSGMLSARGS} $FILE \
	    | ${COSTSH} -S ${TMP_SCRIPT} ${BASE} $* 
  else
       echo main >> ${TMP_SCRIPT}
       ${COSTSH} ${TMP_SCRIPT} $FILE $BASE $* 
  fi
  rm -f ${TMP_SCRIPT}
else
  echo "Parsing SGML..."
  ${NSGMLS} ${INCLUDES} ${SGML_DECL} ${NSGMLSARGS} $FILE > ${BASE}.esis
fi
echo 
exit 0
