--- /dev/null
+#!/bin/bash
+
+# faust2mathviewer.sh
+#
+# Generate a full Faust documentation, in a '*-mdoc' top directory
+# and open the resulting pdf file
+#
+# Karim Barkati
+# November 2009
+#
+# Warning : this script requires several things to be installed :
+# - svg2pdf, from the Cairo 2D graphics library;
+# - pdflatex, to compile the tex file;
+# - breqn, a latex package to break equations;
+# - faust ;-)
+
+
+# Usage.
+print_usage()
+{
+ echo Usage : args of faust2mathviewer should be a \'.dsp\' file, or a list of \'.dsp\' files.
+}
+
+
+# Visit each directory transmited as argument,
+# in order to convert .svg files into pdf.
+# This function uses the svg2pdf command,
+# from the Cairo 2D graphics library.
+convert_svgdirs2pdf()
+{
+ for DIR in $@ ; do
+ if [ -d $DIR ] ; then
+ echo "cd " $DIR
+ cd $DIR
+ FILES=`ls | grep -E "\.svg"`
+ for SRC in $FILES ; do
+ echo ' --> '$SRC
+ PDF=${SRC%.svg}'.pdf'
+ svg2pdf "$SRC" "$PDF"
+ echo ' <-- '$PDF
+ done
+ cd -
+ else
+ echo error : \'$DIR\' is not a directory.
+ fi
+ done
+}
+
+
+# Main loop of this script :
+# 1. Compile `faust -mdoc` to generate the TeX file and SVG block-diagrams.
+# 2. Move to the "${FILEPATH%.dsp}-mdoc" directory created by faust.
+# 3. Convert SVG files into PDF files recursively (with svg2pdf).
+# 4. Compile pdflatex twice (including the top-level block-diagram).
+# 5. Copy some important files where needed.
+
+if [[ $(uname) == Darwin ]]; then
+ OPEN=open
+ export PATH="/usr/texbin:$PATH"
+else
+ OPEN=xdg-open
+fi
+
+for FILEPATH in $@ ; do
+ if [ -f $FILEPATH ] ; then
+ FILENAME=`basename $FILEPATH` &&
+ case $FILENAME in
+ *.dsp )
+ faust -o ${FILEPATH%.dsp}.cpp --mathdoc $FILEPATH &&
+ cd ${FILEPATH%.dsp}-mdoc/ &&
+ cd svg && convert_svgdirs2pdf svg-* && cd .. &&
+ cd tex && pdflatex ${FILENAME%.dsp}.tex && pdflatex ${FILENAME%.dsp}.tex && cd .. &&
+ mkdir -p pdf && cp tex/${FILENAME%.dsp}.pdf pdf &&
+ mkdir -p cpp && mv ../${FILENAME%.dsp}.cpp cpp &&
+ ${OPEN} tex/${FILENAME%.dsp}.pdf &&
+ cd ..
+ ;;
+ * )
+ echo error : \'$FILENAME\' does not have a \'.dsp\' extension.
+ exit 2
+ ;;
+ esac
+ else
+ print_usage
+ exit 1
+ fi
+done
+exit 0
+