Rename interpretor to interpreter.
[Faustine.git] / interpreter / preprocessor / faust-0.9.47mr3 / tools / faust2appls / faust2mathviewer
diff --git a/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2appls/faust2mathviewer b/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2appls/faust2mathviewer
new file mode 100755 (executable)
index 0000000..6b5ac7a
--- /dev/null
@@ -0,0 +1,89 @@
+#!/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
+