Эх сурвалжийг харах

scripts folder is now in a separate repo libigl-scripts

Former-commit-id: 41229497f6754817c22c214c5ffe6e4a4df5c721
Daniele Panozzo 6 жил өмнө
parent
commit
4d66545557

+ 0 - 19
scripts/append_source.sh

@@ -1,19 +0,0 @@
-#!/bin/bash
-
-# Replace #include "filename.cpp" with #include "../../source/filename.cpp"
-for i in $*
-do
-  # Only operate on .h files
-  filename=$(basename $i)
-  extension=${filename##*.}
-  filename=${filename%.*}
-  FILENAME=`echo $filename | tr '[a-z]' '[A-Z]'`
-  if [ ! "$extension" = "h" ];
-  then
-    echo "Skipping $i because it is not a .h file"
-    continue;
-  fi
-  new=`cat "$filename.h" | sed -e "s/# *include \"$filename.cpp\"/#  include \"..\/..\/source\/$filename.cpp\"/"`
-  echo "$new" > $i
-done
-

+ 0 - 79
scripts/autoexplicit.sh

@@ -1,79 +0,0 @@
-#!/bin/bash
-
-while getopts ":C:h" opt; do
-  case $opt in
-    C)
-      CDIR="$OPTARG"
-      if ! cd "$CDIR" 2>/dev/null
-      then
-        (>&2 echo "Failed to change directory to $OPTARG")
-        exit 1
-      fi
-      ;;
-    h)
-      echo "
-Usage:
-  
-    autoexplicit.sh [-C dir] \"
-    Undefined symbols for architecture x86_64:
-     \\\"...\\\" \"
-
-Or 
-
-    make -C [your_project] 2>&1 | autoexplicit.sh -C \$LIBIGL"
-      exit 1
-      ;;
-    \?)
-      echo "Invalid option: -$OPTARG" >&2
-      ;;
-  esac
-done
-
-# Shift so that $# makes sense
-shift $((OPTIND-1))
-
-
-# process input line by line
-while read line; do
-  if ! echo "$line" | grep -q "^\".*\", referenced from:$"
-  then 
-    # undefined symbol line not found
-    continue
-  fi
-  symbol=`echo "$line" | sed -e "s/^\"\(.*\)\", referenced from:$/\1/"`
-  #echo "symbol = $symbol"
-  filename=`echo "$symbol" | perl -pe "s#.*?igl::([A-z0-9_:]*).*$'$'#\1#"`
-  filename=`echo "$filename" | sed -e "s/::/\//g"`
-  #echo "filename = $filename"
-  cpp="./include/igl/$filename.cpp"
-  # append .cpp and check that file exists
-  if [ ! -e "$cpp" ]
-  then
-    echo "Warning: $cpp does not exist, skipping ..."
-    continue
-  fi
-
-  if ! grep -q "^\/\/ Explicit template instantiation*$" "$cpp"
-  then
-    echo "Warning: skipping $cpp because it does not match ^\/\/ Explicit template instantiation*$ "
-    continue;
-  fi
-
-  before=`sed '/^\/\/ Explicit template instantiation$/q' "$cpp"`;
-  #echo "before = $before"
-  after=`sed '1,/^\/\/ Explicit template instantiation$/d' $cpp`;
-  #echo "after = $after"
-  explicit=`echo "template $symbol;" | sed -e "s/std::__1::/std::/g"`
-  #echo "$explicit"
-  if grep -F "$explicit" "$cpp"
-  then
-    echo "Error: $cpp already contains $explicit"
-    echo "       Recompile igl static lib, recompile your project, and try again."
-    continue
-  fi
-  echo "$before" > "$cpp"
-  echo "// generated by autoexplicit.sh" >> "$cpp"
-  echo "$explicit" >> "$cpp"
-  echo "$after" >> "$cpp"
-
-done

+ 0 - 50
scripts/autoexplicit_linux.sh

@@ -1,50 +0,0 @@
-#!/bin/bash
-# Usage:
-#   cd $LIBIGL/include/igl
-#   make -C [your_project] 2>&1 | ../../scripts/autoexplicit_linux.sh
-
-
-# process input line by line
-while read line; do
-  if ! echo "$line" | grep -q "undefined reference to \`.*'$"
-  then 
-    # undefined symbol line not found
-    continue
-  fi
-  symbol=`echo "$line" | sed -e "s/.*undefined reference to .\(.*\)'$/\1/"`
-  #echo "symbol = $symbol"
-  filename=`echo "$symbol" | perl -pe "s#.*?igl::([A-z0-9_]*).*$'$'#\1#"`
-  #echo "filename = $filename"
-  cpp="$filename.cpp"
-  # append .cpp and check that file exists
-  if [ ! -e "$cpp" ]
-  then
-    echo "Warning: $cpp does not exist, skipping ..."
-    continue
-  fi
-
-  if ! grep -q "^\/\/ Explicit template instantiation*$" "$cpp"
-  then
-    echo "Warning: skipping $cpp because it does not match ^\/\/ Explicit template instantiation*$ "
-    continue;
-  fi
-
-  before=`sed '/^\/\/ Explicit template instantiation$/q' "$cpp"`;
-  #echo "before = $before"
-  after=`sed '1,/^\/\/ Explicit template instantiation$/d' $cpp`;
-  #echo "after = $after"
-  explicit="template $symbol;"
-  #echo "$explicit"
-  if grep -F "$explicit" "$cpp"
-  then
-    echo "Error: $cpp already contains $explicit"
-    echo "       Recompile igl static lib, recompile your project, and try again."
-    continue
-  fi
-  #echo "$before" > "$cpp"
-  #echo "// generated by autoexplicit.sh" >> "$cpp"
-  #echo "$explicit" >> "$cpp"
-  #echo "$after" >> "$cpp"
-
-done
-

+ 0 - 115
scripts/clone-and-build.sh

@@ -1,115 +0,0 @@
-#!/bin/bash
-
-# This script 
-#  - clones the libigl github repo into a temporary directory
-#  - updates submodules
-#  - compiles static library
-#  - compiles tutorial
-# If any steps fail then an email is sent to a list of recipients (add yourself
-# if you'd like to be alerted to failures, see below regarding spam filters).
-#
-# You can set up an automated nightly build-check at 2:30 AM using:
-#
-#     crontab -e
-#
-# and then add the line:
-#
-#     30 2 * * * source /Users/ajx/.profile; /usr/local/igl/libigl/scripts/clone-and-build.sh
-#
-# replace the path above with the **full path** to this file.
-#
-
-
-
-# Report that a command has failed and list its output
-#
-#     report_error command output
-#
-# Note: Most mail clients will mark these messages as spam even if the local
-# sender (e.g. ajx@luftmatratze.local) is in your contact list. To force these
-# message to be not marked as spam, create a filter.
-#
-# You can test your spam settings with
-#
-# echo "t3st 3mail" | mail -s "libigl test email" youremail@gmail.com
-#
-# This will almost certainly end up in your spam, but you can find your default
-# email address as the sender and add a filter.
-#
-function report_error {
-  subject="$(echo -e "libigl compilation failure: $1 \nContent-Type: text/html")" 
-  recipients="alecjacobson@gmail.com"
-  pre_style="style='background-color: #c3e0f0; overflow: auto; padding-left: 8px; padding-right: 8px; padding-top: 4px; padding-bottom: 4px; border: 1px solid #999;'";
-  html_content="
-<p>
-The following command failed during the last nightly libigl build:
-<pre $pre_style><code>$(echo -e "$1" | \
-  sed \
-  's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&#39;/g')
-</code></pre>
-</p>
-
-<p>
-The command produced the following standard output/error before failing:
-<pre $pre_style><code>$(echo -e "$2" | \
-  sed \
-  's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&#39;/g')
-</code></pre>
-</p>
-
-<p>
-<a href=https://github.com/libigl/libigl/>libigl github</a> | <a href=https://github.com/libigl/libigl/commits/master>commits</a>
-</p>
-"
-  echo -e "$html_content" | mail -s "$subject" $recipients
-} 
-
-# Runs the arguments as a command as usual, but if the command fails send an
-# email using `report_error` and exit without continuing
-#
-#     guard command arg1 arg2 ...
-#
-function guard {
-  command="$@"
-  pwd
-  echo "$command"
-  if ! output=$($command 2>&1) ;
-  then
-    report_error "$command" "$output"
-    echo "'$command' failed. Report sent."
-    exit 1 
-  fi
-}
-
-function grep_std_1
-{
-  (! grep -rI "std::__1" *)
-}
-
-set -o xtrace
-# Clone repo
-guard rm -rf /var/tmp/libigl
-cd /var/tmp/
-guard git clone --recursive git@github.com:libigl/libigl.git
-cd libigl
-# Build static library
-mkdir lib
-cd lib
-# Redundant paths make it clear which command is failing
-guard cmake -DCMAKE_BUILD_TYPE=Debug  ../optional/
-guard make -C ../lib
-# Build tutorial with default settings
-mkdir ../tutorial/build
-cd ../tutorial/build
-guard cmake -DCMAKE_BUILD_TYPE=Debug  ../../tutorial/
-guard make -C ../../tutorial/build
-# Build tutorial with static library
-cd ../
-mkdir build-use-static
-cd build-use-static
-guard cmake -DCMAKE_BUILD_TYPE=Debug -DLIBIGL_USE_STATIC_LIBRARY=ON ../../tutorial/
-guard make -C ../../tutorial/build-use-static
-# check that no files contain `std::__1` often coming from templates copied
-# from clang output. These will fail on gcc
-cd ../../include/igl
-guard grep_std_1

+ 0 - 23
scripts/compile_external.sh

@@ -1,23 +0,0 @@
-#!/bin/bash
-git clone git@github.com:libigl/libigl.git
-cd libigl/
-make -C external/AntTweakBar/src -f Makefile.osx.igl
-make -C external/yimg
-make -C external/medit/libmesh
-make -C external/medit/ -f Makefile.igl medit
-cd external/tetgen
-make clean
-mkdir obj
-make -f Makefile.igl tetgen
-rm -f obj/*.o
-make -f Makefile.igl tetlib
-mkdir -p ../embree/build
-cd ../embree/build
-cmake .. -DCMAKE_C_COMPILER=/opt/local/bin/gcc -DCMAKE_CXX_COMPILER=/opt/local/bin/g++
-make
-cd ../../tinyxml2
-cmake .
-make
-cd ../../
-make -j12
-make -j12

+ 0 - 152
scripts/compress.sh

@@ -1,152 +0,0 @@
-#!/bin/bash 
-
-if [ "$#" -eq 0 ]
-then
-  USAGE="Usage:
-  scripts/compress.sh igl.h igl.cpp
-
-Compresses all headers into igl.h and all sources into igl.cpp
-
-Or:
-  scripts/compress.sh igl.h
-
-Compresses all headers *and* sources into igl.h (IGL_HEADER_ONLY)
-";
-  echo "$USAGE"
-  exit 1
-fi
-
-#while getopts "I:" opt; do
-#  case $opt in
-#    I)
-#      LIBIGL_INCLUDE=$OPTARG
-#      ;;
-#    \?)
-#    echo "Invalid option: -$OPTARG"
-#      ;;
-#  esac
-#done
-#shift $((OPTIND-1))
-
-if [ "$#" -eq 1 ]
-then
-  H_OUT=$1
-  CPP_OUT=$H_OUT
-fi
-
-if [ "$#" -eq 2 ]
-then
-  H_OUT=$1
-  CPP_OUT=$2
-fi
-
-# Prepare output files
-#H_OUT=igl.h
-#CPP_OUT=igl.cpp
-rm -f $H_OUT
-rm -f $CPP_OUT
-
-HEADER="
-Automatically generated by libigl/scripts/compress.sh **Do not edit**
-
-libigl - A simple c++ geometry processing library
-
-http://igl.ethz.ch/projects/libigl/
-
-Copyright (C) 2013 - Alec Jacobson, Daniele Panozzo, Olga Diamanti, Kenshi
-Takayama, Leo Sacht, Interactive Geometry Lab - ETH Zurich
-
-This Source Code Form is subject to the terms of the Mozilla Public License 
-v. 2.0. If a copy of the MPL was not distributed with this file, You can 
-obtain one at http://mozilla.org/MPL/2.0/.
-
-`cat $LIBIGL/VERSION.txt | sed -ne "s/^\([^\#]\)/VERSION \1/p"`
-
-Compressed on `date`
-
-"
-
-echo "$HEADER" | sed -e "s/^/\/\/ /" >> $H_OUT
-
-WIDGET_OPEN="
-#ifdef IGL_STATIC_LIBRARY
-#  define IGL_HEADER_ONLY
-#  define IGL_HEADER_ONLY_WAS_NOT_DEFINED
-#endif
-";
-WIDGET_CLOSE="
-#ifndef IGL_STATIC_LIBRARY_WAS_NOT_DEFINED
-#  undef IGL_HEADER_ONLY
-#endif
-";
-
-# No cpp file, just header
-if [ $H_OUT == $CPP_OUT ]
-then
-  echo "$WIDGET_OPEN" >> $H_OUT
-fi
-
-echo "" >> $H_OUT
-echo "#ifndef IGL_H" >> $H_OUT
-echo "#define IGL_H" >> $H_OUT
-LIBIGL=/usr/local/igl/libigl
-FIRST_H_FILES="\
-$LIBIGL/include/igl/igl_inline.h \
-";
-
-H_FILES="$FIRST_H_FILES `ls $LIBIGL/include/igl/*.h`"
-for h in $H_FILES
-do
-  short=`echo $h | sed -e 's/.*igl\///'`
-  echo "//////////////////////////////////////////////////////////////////" >> $H_OUT
-  echo "// $short begin" >> $H_OUT
-  echo "//" >> $H_OUT
-  # Remove "local" header or cpp files
-  cat $h | sed -E '/^\# *include  *"*[A-z_]*.(cpp|h)"/d' >> $H_OUT
-  echo "//" >> $H_OUT
-  echo "// $short end" >> $H_OUT
-  echo "//////////////////////////////////////////////////////////////////" >> $H_OUT
-  echo "" >> $H_OUT
-done
-echo "#endif" >> $H_OUT
-
-# Distinct h and cpp files
-if [ $H_OUT != $CPP_OUT ]
-then
-  echo "$HEADER" | sed -e "s/^/\/\/ /" >> $CPP_OUT
-  echo "#include \"igl.h\"" >> $CPP_OUT
-  echo "" >> $CPP_OUT
-fi
-
-LAST_CPP_FILES="\
-$LIBIGL/include/igl/MCTables.hh \
-";
-CPP_FILES=`ls $LIBIGL/include/igl/*.cpp $LAST_CPP_FILES`
-for cpp in $CPP_FILES
-do
-  short=`echo $cpp | sed -e 's/.*igl\///'`
-  echo "//////////////////////////////////////////////////////////////////" >> $CPP_OUT
-  echo "// $short begin" >> $CPP_OUT
-  echo "//" >> $CPP_OUT
-  # Remove "local" header or cpp files
-  cat $cpp | sed -E '/^\# *include  *"*[A-z_]*.(cpp|h)"/d' >> $CPP_OUT
-  echo "//" >> $CPP_OUT
-  echo "// $short end" >> $CPP_OUT
-  echo "//////////////////////////////////////////////////////////////////" >> $CPP_OUT
-  echo "" >> $CPP_OUT
-done
-
-# No cpp file, just header
-if [ $H_OUT == $CPP_OUT ]
-then
-  echo "$WIDGET_CLOSE" >> $CPP_OUT
-fi
-
-# Try to compile it
-echo "Compile with:"
-echo ""
-echo "    g++ -o igl.o -c igl.cpp -I/opt/local/include/eigen3"
-echo "    rm -f libigl.a"
-echo "    ar cqs libigl.a igl.o"
-echo "    rm igl.o"
-echo ""

+ 0 - 60
scripts/doc.sh

@@ -1,60 +0,0 @@
-#!/bin/bash
-
-# THIS would be much easier with a ruby script that parsed each .h/.cpp pair
-# and created a <tr> row.
-#
-
-echo "<html>"
-echo "  <head>"
-echo "    <title>libigl auto-documentation</title>"
-echo '    <link href="./style.css" rel="stylesheet" type="text/css">'
-echo "  </head>"
-echo "  <body>"
-echo "  <div id=container>"
-echo "  <div class=article_outer>"
-echo "  <div class=article_inner>"
-echo "    <a href=.><img src=libigl-logo.jpg alt='igl logo' class=center></a>"
-echo "    <h1>libigl</h1>"
-echo "    Automatically generated documentation for <a href=.>libigl</a>."
-echo "    <h2>Headers:</h2>"
-echo "    <table class=full>"
-echo "      <colgroup>"
-echo "        <col span="1" style="width:300px">"
-echo "      </colgroup>"
-echo "      <tr class=header><th>.h file</th><th>Functions</th></tr>"
-# loop over all headers
-odd="0"
-HEADERS=`ls include/igl/*.h | \
-  ruby -ne 'puts $_.split("").map{|e| (e>="a"?e.upcase():e.downcase())}.join' | \
-  sort | \
-  ruby -ne 'puts $_.split("").map{|e| (e>="a"?e.upcase():e.downcase())}.join'`
-for h in $HEADERS
-do
-  b=`basename $h`
-  # only consider files that exist as proper .h/.cpp files (Those that don't
-  # are mostly utilitarian or poorly written)
-  if [ -e "${h%.h}.cpp" ]
-  then
-    printf "      <tr id='$b' class=d$odd><td>$b</td>"
-    # portion of file inside namespace 
-    html_nsp=`cat $h | \
-      perl -ne 'BEGIN{$p = 0} $o=$p;$p ^= $_=~"[{}]";print if $o && $p;' | \
-      sed -e "s/</\&lt;/g" | sed -e "s/>/\&gt;/g" | sed -e "s/%/%%/g" | \
-      sed -e "s/^\( *[^ \/].*\)$/<pre><code>\1<\/code><\/pre>/g" |  \
-      sed -e ':a' -e 'N' -e '$!ba' -e 's/<\/code><\/pre>\n<pre><code>/\\\n/g' | \
-      sed -e "s/^\(.*[^ ].*\)$/\1<br>/g"`;
-    printf "<td>$html_nsp</td>"
-    # Try to find functions and corresponding comments
-    echo "</tr>"
-    odd=`echo "($odd+1)%2" | bc`
-  fi
-done
-
-echo "    </table>"
-echo "    <p>See also: <a href=tutorial.html>tutorial</a>, <a href=style_guidelines.html>style guidelines</a>, <a href=file-formats/index.html>file formats</a></p>"
-echo "    <p>Automatically generated on `date` by scripts/doc.sh.</p>"
-echo "  </div>"
-echo "  </div>"
-echo "  </div>"
-echo "  </body>"
-echo "</html>"

+ 0 - 339
scripts/figureAltCaption/LICENSE.md

@@ -1,339 +0,0 @@
-GNU GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                            NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    Extension for markdown to parse images with captions inside a figure element.
-    Copyright (C) 2013  Helder Correia
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  {signature of Ty Coon}, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.

+ 0 - 31
scripts/figureAltCaption/README.md

@@ -1,31 +0,0 @@
-Generates a figurecaption each Image which stands alone in a paragraph,
-similar to [pandoc’s handling of images/figures](http://pandoc.org/README.html#extension-implicit_figures)
-
---------------------------------------------
-
-Licensed under the GPL 2 (see LICENSE.md)
-
-Copyright 2015 - Jan Dittrich by
-building upon the [markdown-figures](https://github.com/helderco/markdown-figures) Plugin by
-Copyright 2013 - [Helder Correia](http://heldercorreia.com) (GPL2)
-
---------------------------------------------
-
-Example – this source:
-
-    Bla bla bla
-
-    ![this is the caption](http://lorempixel.com/400/200/)
-
-    Next paragraph starts here
-
-would generate this:
-
-    <p> Bla bla bla</p>
-    
-    <figure>
-        <img src="http://lorempixel.com/400/200/">
-        <figcaption>this is the caption</figcaption>
-    </figure>
-   
-    <p>Next paragraph starts here</p>

+ 0 - 1
scripts/figureAltCaption/__init__.py

@@ -1 +0,0 @@
-from .figureAltCaption import *

+ 0 - 80
scripts/figureAltCaption/figureAltCaption.py

@@ -1,80 +0,0 @@
-"""
-Generates a Caption for Figures for each Image which stands alone in a paragraph,
-similar to pandoc#s handling of images/figures
-
---------------------------------------------
-
-Licensed under the GPL 2 (see LICENSE.md)
-
-Copyright 2015 - Jan Dittrich by
-building upon the markdown-figures Plugin by
-Copyright 2013 - [Helder Correia](http://heldercorreia.com) (GPL2)
-
---------------------------------------------
-
-Examples:
-    Bla bla bla
-
-    ![this is the caption](http://lorempixel.com/400/200/)
-
-    Next paragraph starts here
-
-would generate a figure like this:
-
-    <figure>
-        <img src="http://lorempixel.com/400/200/">
-        <figcaption>this is the caption</figcaption>
-    </figure>
-"""
-
-
-from __future__ import unicode_literals
-from markdown import Extension
-from markdown.inlinepatterns import IMAGE_LINK_RE, IMAGE_REFERENCE_RE, NOBRACKET, BRK
-from markdown.blockprocessors import BlockProcessor
-from markdown.util import etree
-import re #regex
-
-import logging
-logger = logging.getLogger('MARKDOWN')
-
-FIGURES = [u'^\s*'+IMAGE_LINK_RE+u'\s*$', u'^\s*'+IMAGE_REFERENCE_RE+u'\s*$'] #is: linestart, any whitespace (even none), image, any whitespace (even none), line ends.
-
-# This is the core part of the extension
-class FigureCaptionProcessor(BlockProcessor):
-    FIGURES_RE = re.compile('|'.join(f for f in FIGURES))
-    def test(self, parent, block): # is the block relevant
-        # Wenn es ein Bild gibt und das Bild alleine im paragraph ist, und das Bild nicht schon einen figure parent hat, returne True
-        isImage = bool(self.FIGURES_RE.search(block))
-        isOnlyOneLine = (len(block.splitlines())== 1)
-        isInFigure = (parent.tag == 'figure')
-
-        # print(block, isImage, isOnlyOneLine, isInFigure, "T,T,F")
-        if (isImage and isOnlyOneLine and not isInFigure):
-            return True
-        else:
-            return False
-
-    def run(self, parent, blocks): # how to process the block?
-        raw_block = blocks.pop(0)
-        captionText = self.FIGURES_RE.search(raw_block).group(1)
-
-        # create figure
-        figure = etree.SubElement(parent, 'figure')
-
-        # render image in figure
-        figure.text = raw_block
-
-        # create caption
-        figcaptionElem = etree.SubElement(figure,'figcaption')
-        figcaptionElem.text = captionText #no clue why the text itself turns out as html again and not raw. Anyhow, it suits me, the blockparsers annoyingly wrapped everything into <p>.
-
-class FigureCaptionExtension(Extension):
-    def extendMarkdown(self, md, md_globals):
-        """ Add an instance of FigcaptionProcessor to BlockParser. """
-        md.parser.blockprocessors.add('figureAltcaption',
-                                      FigureCaptionProcessor(md.parser),
-                                      '<ulist')
-
-def makeExtension(configs={}):
-    return FigureCaptionExtension(configs=configs)

+ 0 - 11
scripts/figureAltCaption/setup.py

@@ -1,11 +0,0 @@
-#!/usr/bin/env python
-
-from setuptools import setup
-
-setup(
-    name='figureAltCaption',
-    description='Extension for Python-Markdown to parse images with captions.',
-    url='https://github.com/jdittrich/figureAltCaption',
-    py_modules=['figureAltCaption'],
-    install_requires=['Markdown>=2.0',],
-)

+ 0 - 1
scripts/fixPaths/__init__.py

@@ -1 +0,0 @@
-from .pathconverter import *

+ 0 - 146
scripts/fixPaths/pathconverter.py

@@ -1,146 +0,0 @@
-"""
-Path Converter.
-
-pymdownx.pathconverter
-An extension for Python Markdown.
-
-An extension to covert tag paths to relative or absolute:
-
-Given an absolute base and a target relative path, this extension searches for file
-references that are relative and converts them to a path relative
-to the base path.
-
--or-
-
-Given an absolute base path, this extension searches for file
-references that are relative and converts them to absolute paths.
-
-MIT license.
-
-Copyright (c) 2014 - 2017 Isaac Muse <isaacmuse@gmail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
-and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
-CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-"""
-from __future__ import unicode_literals
-import os
-import re
-import sys
-import logging
-from markdown import Extension
-from markdown.postprocessors import Postprocessor
-from . import util
-
-RE_TAG_HTML = r'''(?xus)
-    (?:
-        (?P<comments>(\r?\n?\s*)<!--[\s\S]*?-->(\s*)(?=\r?\n)|<!--[\s\S]*?-->)|
-        (?P<open><(?P<tag>(?:%s)))
-        (?P<attr>(?:\s+[\w\-:]+(?:\s*=\s*(?:"[^"]*"|'[^']*'))?)*)
-        (?P<close>\s*(?:\/?)>)
-    )
-    '''
-
-RE_TAG_LINK_ATTR = re.compile(
-    r'''(?xus)
-    (?P<attr>
-        (?:
-            (?P<name>\s+(?:href|src)\s*=\s*)
-            (?P<path>"[^"]*"|'[^']*')
-        )
-    )
-    '''
-)
-
-log = logging.getLogger(__name__)
-
-
-def pprint(*args):
-    print(*args)
-    sys.stdout.flush()
-
-
-def repl_absolute(m, key, val):
-    """Replace path with absolute path."""
-
-    link = m.group(0)
-    try:
-        scheme, netloc, path, params, query, fragment, is_url, is_absolute = util.parse_url(m.group('path')[1:-1])
-        new_path = m.group('path')[1:-1].replace('../{{ %s }}' % key, val)
-
-        if (not is_absolute and not is_url):
-            link = '%s"%s"' % (m.group('name'), new_path)
-
-    except Exception:  # pragma: no cover
-        # Parsing crashed and burned; no need to continue.
-        pass
-
-    return link
-
-
-def repl(m, key, val):
-    """Replace."""
-
-    if m.group('comments'):
-        tag = m.group('comments')
-    else:
-        tag = m.group('open')
-        tag += RE_TAG_LINK_ATTR.sub(lambda m2: repl_absolute(m2, key, val), m.group('attr'))
-        tag += m.group('close')
-    return tag
-
-
-class PathConverterPostprocessor(Postprocessor):
-    """Post process to find tag links to convert."""
-
-    def run(self, text):
-        """Find and convert paths."""
-
-        variables = self.config['variables']
-        # relativepath = self.config['relative_path']
-        # absolute = bool(self.config['absolute'])
-        tags = re.compile(RE_TAG_HTML % '|'.join(self.config['tags'].split()))
-        # pprint(absolute, basepath, relativepath)
-        # if not absolute and basepath and relativepath:
-        #     text = tags.sub(lambda m: repl(m, basepath, relativepath), text)
-        for key, val in variables.items():
-            text = tags.sub(lambda m, k=key, v=val: repl(m, k, v), text)
-        return text
-
-
-class PathConverterExtension(Extension):
-    """PathConverter extension."""
-
-    def __init__(self, *args, **kwargs):
-        """Initialize."""
-
-        self.config = {
-            'variables': [{}, "Dict of variables to replace"],
-            'tags': ["a link", "tags to convert src and/or href in - Default: 'img scripts a link'"]
-        }
-
-        super(PathConverterExtension, self).__init__(*args, **kwargs)
-
-    def extendMarkdown(self, md, md_globals):
-        """Add post processor to Markdown instance."""
-
-        rel_path = PathConverterPostprocessor(md)
-        rel_path.config = self.getConfigs()
-        md.postprocessors.add("path-converter", rel_path, "_end")
-        md.registerExtension(self)
-
-
-def makeExtension(*args, **kwargs):
-    """Return extension."""
-
-    return PathConverterExtension(*args, **kwargs)

+ 0 - 180
scripts/fixPaths/util.py

@@ -1,180 +0,0 @@
-"""
-General utilities.
-
-MIT license.
-
-Copyright (c) 2017 Isaac Muse <isaacmuse@gmail.com>
-"""
-from __future__ import unicode_literals
-import sys
-import copy
-import re
-
-PY3 = sys.version_info >= (3, 0)
-PY34 = sys.version_info >= (3, 4)
-
-if PY3:
-    uchr = chr  # noqa
-    from urllib.request import pathname2url, url2pathname  # noqa
-    from urllib.parse import urlparse, urlunparse, quote  # noqa
-    from html.parser import HTMLParser  # noqa
-    if PY34:
-        import html  # noqa
-        html_unescape = html.unescape  # noqa
-    else:  # pragma: no cover
-        html_unescape = HTMLParser().unescape  # noqa
-else:
-    uchr = unichr  # noqa
-    from urllib import pathname2url, url2pathname, quote  # noqa
-    from urlparse import urlparse, urlunparse  # noqa
-    from HTMLParser import HTMLParser  # noqa
-    html_unescape = HTMLParser().unescape  # noqa
-
-RE_WIN_DRIVE_LETTER = re.compile(r"^[A-Za-z]$")
-RE_WIN_DRIVE_PATH = re.compile(r"^[A-Za-z]:(?:\\.*)?$")
-RE_URL = re.compile('(http|ftp)s?|data|mailto|tel|news')
-IS_NARROW = sys.maxunicode == 0xFFFF
-
-if IS_NARROW:
-    def get_code_points(s):
-        """Get the Unicode code points."""
-
-        pt = []
-
-        def is_full_point(p, point):
-            """
-            Check if we have a full code point.
-
-            Surrogates are stored in point.
-            """
-            v = ord(p)
-            if 0xD800 <= v <= 0xDBFF:
-                del point[:]
-                point.append(p)
-                return False
-            if point and 0xDC00 <= v <= 0xDFFF:
-                point.append(p)
-                return True
-            del point[:]
-            return True
-
-        return [(''.join(pt) if pt else c) for c in s if is_full_point(c, pt)]
-
-    def get_ord(c):
-        """Get Unicode ord."""
-
-        if len(c) == 2:
-            high, low = [ord(p) for p in c]
-            ordinal = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000
-        else:
-            ordinal = ord(c)
-
-        return ordinal
-
-    def get_char(value):
-        """Get the Unicode char."""
-        if value > 0xFFFF:
-            c = ''.join(
-                [
-                    uchr(int((value - 0x10000) / (0x400)) + 0xD800),
-                    uchr((value - 0x10000) % 0x400 + 0xDC00)
-                ]
-            )
-        else:
-            c = uchr(value)
-        return c
-
-else:
-    def get_code_points(s):
-        """Get the Unicode code points."""
-
-        return [c for c in s]
-
-    def get_ord(c):
-        """Get Unicode ord."""
-
-        return ord(c)
-
-    def get_char(value):
-        """Get the Unicode char."""
-
-        return uchr(value)
-
-
-def escape_chars(md, echrs):
-    """
-    Add chars to the escape list.
-
-    Don't just append as it modifies the global list permanently.
-    Make a copy and extend **that** copy so that only this Markdown
-    instance gets modified.
-    """
-
-    escaped = copy.copy(md.ESCAPED_CHARS)
-    for ec in echrs:
-        if ec not in escaped:
-            escaped.append(ec)
-    md.ESCAPED_CHARS = escaped
-
-
-def parse_url(url):
-    """
-    Parse the URL.
-
-    Try to determine if the following is a file path or
-    (as we will call anything else) a URL.
-
-    We return it slightly modified and combine the path parts.
-
-    We also assume if we see something like c:/ it is a Windows path.
-    We don't bother checking if this **is** a Windows system, but
-    'nix users really shouldn't be creating weird names like c: for their folder.
-    """
-
-    is_url = False
-    is_absolute = False
-    scheme, netloc, path, params, query, fragment = urlparse(html_unescape(url))
-
-    if RE_URL.match(scheme):
-        # Clearly a url
-        is_url = True
-    elif scheme == '' and netloc == '' and path == '':
-        # Maybe just a url fragment
-        is_url = True
-    elif scheme == 'file' and (RE_WIN_DRIVE_PATH.match(netloc)):
-        # file://c:/path or file://c:\path
-        path = '/' + (netloc + path).replace('\\', '/')
-        netloc = ''
-        is_absolute = True
-    elif scheme == 'file' and netloc.startswith('\\'):
-        # file://\c:\path or file://\\path
-        path = (netloc + path).replace('\\', '/')
-        netloc = ''
-        is_absolute = True
-    elif scheme == 'file':
-        # file:///path
-        is_absolute = True
-    elif RE_WIN_DRIVE_LETTER.match(scheme):
-        # c:/path
-        path = '/%s:%s' % (scheme, path.replace('\\', '/'))
-        scheme = 'file'
-        netloc = ''
-        is_absolute = True
-    elif scheme == '' and netloc != '' and url.startswith('//'):
-        # //file/path
-        path = '//' + netloc + path
-        scheme = 'file'
-        netloc = ''
-        is_absolute = True
-    elif scheme != '' and netloc != '':
-        # A non-filepath or strange url
-        is_url = True
-    elif path.startswith(('/', '\\')):
-        # /root path
-        is_absolute = True
-
-    return (scheme, netloc, path, params, query, fragment, is_url, is_absolute)
-
-
-class PymdownxDeprecationWarning(UserWarning):  # pragma: no cover
-    """Deprecation warning for Pymdownx that is not hidden."""

+ 0 - 88
scripts/h2pair.sh

@@ -1,88 +0,0 @@
-#!/bin/bash
-
-# http://tipstricks.itmatrix.eu/?p=305
-tac () {
-awk '1 { last = NR; line[last] = $0; } END { for (i = last; i > 0; i--) { print line[i]; } }'
-}
-
-function replace_inline
-{
-  result="$1"
-  # replace inlines with IGL_INLINEs, first those that begin lines
-  result=`echo "$result" | sed -e 's/^inline/IGL_INLINE/g'`
-  # then also those that begin words
-  result=`echo "$result" | sed -e 's/ inline/ IGL_INLINE/g'`
-  echo "$result"
-}
-
-# Convert well organized .h file to a .h/.cpp pair
-for i in $*
-do
-  # Only operate on .h files
-  filename=$(basename $i)
-  extension=${filename##*.}
-  filename=${filename%.*}
-  FILENAME=`echo $filename | tr '[a-z]' '[A-Z]'`
-  if [ ! "$extension" = "h" ];
-  then
-    echo "Skipping $i because it is not a .h file"
-    continue;
-  fi
-
-  if ! grep -q "^\/\/ Implementation *$" "$i"
-  then
-    echo "Skipping $i because it does not match ^\/\/ Implementation *$ "
-    continue;
-  fi
-
-  if [[ `grep -c "^\#endif" "$i"` > 1 ]];
-  then
-    echo "Warning $i contains multiple matches to ^#endif"
-  fi
-
-  before=`sed -n '/^\/\/ Implementation$/q;p' "$i"`;
-
-  if ! echo "$before" | grep -q "^\#ifndef IGL_${FILENAME}_H"
-  then
-    echo "Skipping $i because it does not match ^#ifndef IGL_${FILENAME}_H "
-    continue;
-  fi
-
-  if ! echo "$before" | grep -q "^\#define IGL_${FILENAME}_H"
-  then
-    echo "Skipping $i because it does not match ^#define IGL_${FILENAME}_H "
-    continue;
-  fi
-
-  before=`replace_inline "$before"`
-  # prepend #include "igl_inline.h"
-  before=`echo "$before" | sed -e 's/^\(#define IGL_'${FILENAME}'_H\)/\1\'$'\n''#include \"igl_inline.h\"'/`
-  after=`sed '1,/^\/\/ Implementation$/d' $i`;
-  after=`replace_inline "$after"`
-  # reverse file
-  after=`echo "$after" | tac`
-  # everything after first (last) endif 
-  after=`echo "
-$after" | sed '1,/endif/d'`;
-  # reverse file
-  after=`echo "$after" | tac`
-  # append empty template code
-  if grep -q "template" "$i"
-  then
-    after=`echo "$after
-
-#ifdef IGL_STATIC_LIBRARY
-// Explicit template instantiation
-#endif"` 
-  fi
-  echo "$before
-
-#ifndef IGL_STATIC_LIBRARY
-#  include \"$filename.cpp\"
-#endif
-
-#endif"> "$filename".h
-  echo "#include \"$filename.h\"
-
-$after"> "$filename".cpp
-done

+ 0 - 49
scripts/header_adjacency.m

@@ -1,49 +0,0 @@
-function [A,H,f2H] = header_adjacency(files)
-  % HEADER_ADJACENCY given a list of .cpp/.h files find all <igl/*.h> header
-  % files and determine mutual inclusions.
-  %
-  % Inputs:
-  %   files  list of .cpp/.h files
-  % Outputs:
-  %   A  adjacency matrix so that A(i,j) is the number of mutual includes for
-  %     H(i) and H(j)
-  %   H  list of unique headers
-  %
-  % Example:
-  %   files = textscan([ ...
-  %     ls('/some/dir/*.cpp') ...
-  %     ls('/some/dir/*.h')],'%s', 'delimiter', '\n' );
-  %   files = files{1};
-  %   [A,H] = header_adjacency(files);
-  %
-
-  mH = containers.Map();
-  f2HI = [];
-  f2HJ = [];
-  for f = 1:numel(files)
-    if isempty(regexp(files{f},'include/igl/[^/]*$'))
-      fH = regexp(fileread(files{f}),'<igl/([^.]*.h)>','tokens');
-    else
-      fH = regexp(fileread(files{f}),'"([^.]*.h)"','tokens');
-    end
-    fH = [fH{:}]';
-    for h = 1:numel(fH)
-      h_str = fH{h};
-      if ~mH.isKey(h_str)
-        mH(h_str) = mH.size(1) + 1;
-      end
-      f2HI = [f2HI(:); f];
-      f2HJ = [f2HJ(:); mH(h_str)];
-    end
-  end
-  f2H = sparse(f2HI,f2HJ,1,numel(files),mH.size(1));
-  A = f2H'*f2H;
-  % diagonal is not interesting
-  A = A - diag(diag(A));
-  keys = mH.keys;
-  values = mH.values;
-  values = [values{:}];
-  [~,I] = sort(values);
-  H = keys(I);
-
-end

+ 0 - 61
scripts/header_cluster_demo.m

@@ -1,61 +0,0 @@
-[~,extra_h] = unix('ls -1 /usr/local/igl/libigl/include/igl/*/*.h');
-[~,extra_cpp] = unix('ls -1 /usr/local/igl/libigl/include/igl/*/*.cpp');
-[~,examples] = unix('ls -1 /usr/local/igl/libigl/examples/*/*.cpp');
-[~,dropbox] = unix('ls -1 ~/Dropbox/*/*.cpp');
-files = textscan([ ...
-  ls('~/Documents/Puppet/Code/C++/*.cpp') ...
-  ls('~/Documents/Puppet/Code/C++/*.h') ...
-  ls('~/Documents/EdgeBasedLaplacian/Code/C++/src/*.cpp') ...
-  ls('~/Documents/EdgeBasedLaplacian/Code/C++/src/*.h') ...
-  ls('~/Documents/volume/winding_number/*.cpp') ...
-  ls('~/Documents/volume/winding_number/*.h') ...
-  ls('~/Documents/volume/selfintersect/src/*.cpp') ...
-  ls('~/Documents/volume/selfintersect/src/*.h') ...
-  ls('~/Documents/volume/post_graph_cut/*.cpp') ...
-  ls('~/Documents/volume/post_graph_cut/*.h') ...
-  ls('~/Documents/AutoDOF/Code/skinning/skinning/*.cpp') ...
-  ls('~/Documents/AutoDOF/Code/skinning/skinning/*.h') ...
-  ls('/usr/local/igl/libigl/include/igl/*.h') ...
-  ls('/usr/local/igl/libigl/include/igl/*.cpp') ...
-  extra_h ...
-  extra_cpp ...
-  examples ...
-  dropbox  ...
-  ],'%s', 'delimiter', '\n' );
-files = files{1};
-[~,H,f2H] = header_adjacency(files);
-% Must be included at least twice
-H = H(sum(f2H,1) > 1);
-f2H = f2H(:,sum(f2H,1) > 1);
-A = f2H' * f2H;
-% diagonal is not interesting
-A = A - diag(diag(A));
-% Must have at least median mutual includes to be an edge
-A(A(:)<1) = 0;
-% Must have at least median other mutual includes
-H = H(sum(A,2)>median(sum(A,2)));
-A = A( sum(A,2)>median(sum(A,2)), sum(A,2)>median(sum(A,2)));
-
-P = rand(numel(H),2);
-[EI,EJ] = find(tril(A+A'));
-E = [EJ EI];
-L = (A-diag(sum(A,2)));
-I = 0*speye(size(L));
-[EV,ED] = eigs(L+I,size(A,1),'sm');
-EV = EV(:,2:end);
-ED = ED(2:end, 2:end);
-p = 1;
-B = EV * (inv(abs(ED))^(p/2));
-
-%nsp = 2;
-%subplot(1,nsp,1);
-%plot_edges(P,E);
-%subplot(1,nsp,2);
-plot_edges(B(:,1:3),E);
-
-C = kmeans(B,20);
-
-for c = 1:max(C)
-  fprintf('%s\n',H{C==c});
-  fprintf('\n');
-end

+ 0 - 55
scripts/license.py

@@ -1,55 +0,0 @@
-# https://stackoverflow.com/questions/151677/tool-for-adding-license-headers-to-source-files
-# updates the copyright information for all .cs files
-# usage: call recursive_traversal, with the following parameters
-# parent directory, old copyright text content, new copyright text content
-
-import os
-
-excludedir = ["..\\Lib"]
-
-def update_source(filename, oldcopyright, copyright):
-    utfstr = chr(0xef)+chr(0xbb)+chr(0xbf)
-    fdata = file(filename,"r+").read()
-    isUTF = False
-    if (fdata.startswith(utfstr)):
-        isUTF = True
-        fdata = fdata[3:]
-    if (oldcopyright != None):
-        if (fdata.startswith(oldcopyright)):
-            fdata = fdata[len(oldcopyright):]
-    if not (fdata.startswith(copyright)):
-        print "updating "+filename
-        fdata = copyright + fdata
-        if (isUTF):
-            file(filename,"w").write(utfstr+fdata)
-        else:
-            file(filename,"w").write(fdata)
-
-def recursive_traversal(dir,  oldcopyright, copyright):
-    global excludedir
-    fns = os.listdir(dir)
-    # print "listing "+dir
-    for fn in fns:
-        fullfn = os.path.join(dir,fn)
-        if (fullfn in excludedir):
-            continue
-        if (os.path.isdir(fullfn)):
-            recursive_traversal(fullfn, oldcopyright, copyright)
-        else:
-            if (fullfn.endswith(".py")):
-                update_source(fullfn, oldcopyright, copyright)
-
-
-#oldcright = file("oldcr.txt","r+").read()
-#cright = file("copyrightText.txt","r+").read()
-oldcright = None
-cright = """# This file is part of libigl, a simple c++ geometry processing library.
-#
-# Copyright (C) 2017 Sebastian Koch <s.koch@tu-berlin.de> and Daniele Panozzo <daniele.panozzo@gmail.com>
-#
-# This Source Code Form is subject to the terms of the Mozilla Public License
-# v. 2.0. If a copy of the MPL was not distributed with this file, You can
-# obtain one at http://mozilla.org/MPL/2.0/.
-"""
-recursive_traversal(".", oldcright, cright)
-exit()

+ 0 - 43
scripts/license.sh

@@ -1,43 +0,0 @@
-#!/bin/bash
-
-if [ "$#" -ne 0 ]
-then
-  USAGE="Usage:
-  scripts/license.sh
-
-Checks and appends MPL2 license to all files.
-";
-  echo "$USAGE"
-  exit 1
-fi
-
-# By default use Alec's email address.
-HEADER="\
-This file is part of libigl, a simple c++ geometry processing library.
-
-Copyright (C) 2013 Alec Jacobson <alecjacobson@gmail.com>
-
-This Source Code Form is subject to the terms of the Mozilla Public License 
-v. 2.0. If a copy of the MPL was not distributed with this file, You can 
-obtain one at http://mozilla.org/MPL/2.0/.";
-
-
-HEADER_TMPFILE="libigl.header.tmpfile";
-CPPHEADER=`echo "$HEADER" | sed -e "s/^/\/\/ /"`
-#echo -e "$(echo "$HEADER" | sed -e "s/^/\/\/ /")\n$(cat test.h)" > test.h
-
-FIRST_LINE_OF_HEADER=`echo -e "$HEADER" | head -1`
-
-# Files from third-party sources
-EXCEPT="tga|MCTables|marching_cubes"
-
-SRC_FILES=`find include/igl -name \*.h -print -o -name \*.cpp -print`
-SRC_FILES=`echo "$SRC_FILES" | egrep -v $EXCEPT`
-for s in $SRC_FILES
-do
-  if ! head -1 $s | grep -F "$FIRST_LINE_OF_HEADER" >/dev/null
-  then
-    echo "Appending license header to $s..."
-    echo "$CPPHEADER" |cat - $s > /tmp/out && mv /tmp/out $s
-  fi;
-done

+ 0 - 110
scripts/make.sh

@@ -1,110 +0,0 @@
-#!/bin/bash
-
-# This assumes that you're in the "build" of a cmake build process. E.g.,
-# you've already done something like:
-#
-#   mkdir build
-#   cd build
-#   cmake ..
-#
-# Then this will (try to) circumvent cmake's aggressive (i.e., predefined macro
-# oblivious) dependency scanner by calling makedepend directly for every .cpp
-# file of every target.
-
-NUM_THREADS="1"
-while getopts ":C:j:h" opt; do
-  case $opt in
-    C)
-      if ! cd "$OPTARG" 2>/dev/null
-      then
-        (>&2 echo "Failed to change directory to $OPTARG")
-        exit 1
-      fi
-      ;;
-    h)
-      echo "
-Usage:
-  
-    make.sh [-j #] [-C dir] [project]"
-      exit 1
-      ;;
-    j)
-      NUM_THREADS="$OPTARG"
-      ;;
-    \?)
-      echo "Invalid option: -$OPTARG" >&2
-      ;;
-  esac
-done
-
-# Shift so that $# makes sense
-shift $((OPTIND-1))
-
-if [ ! -f "Makefile" ]; then
-  (>&2 echo "Makefile not found")
-  exit 1
-fi
-
-# I don't want to do this if I don't have to:
-#make depend
-
-if [[ $# -eq 0 ]] ; then
-  # Try to get project name
-  PROJECTS=`find . -type d -depth 1 | sed -e "s/.\///g" | grep -v CMakeFiles | grep -v "^\."`
-else
-  PROJECTS=`echo "$@" | tr ' ' '\n'`
-fi
-
-ret=0
-for PROJECT in $PROJECTS
-do
-
-  PROJECT="${PROJECT%/}"
-  
-  if [ ! -d "$PROJECT" ]; then
-    (>&2 echo "$PROJECT directory not found")
-    exit 1
-  fi
-  
-  
-  for TARGET_DIR in `find "$PROJECT/CMakeFiles" -depth 1 | grep "\.dir"`
-  do
-    TARGET_DIR="${TARGET_DIR%/}"
-    if ! grep --quiet "# make\.sh was here" "$TARGET_DIR/depend.make"
-    then
-      if grep --quiet "Empty dependencies" "$TARGET_DIR/depend.make"
-      then
-        make -f "$TARGET_DIR/build.make" "$TARGET_DIR/depend"
-      fi
-      if grep --quiet "Empty dependencies" "$TARGET_DIR/depend.make"
-      then
-        (>&2 echo "cmake's make failed to build a dependency file")
-        (>&2 echo "[Consider issuing \`make depend\`]")
-        continue
-      fi
-    fi
-    TARGET=`basename -s .dir $TARGET_DIR`
-    echo -e "\033[1;35mHacking dependencies of target $TARGET\033[0m"
-    SRC_FILES=`cat "$TARGET_DIR/depend.make" | sed -n "s~^#*\($TARGET_DIR\)\(.*\)\.o: \2~\2~gp"`
-    if grep --quiet "CMAKE generated file" "$TARGET_DIR/depend.make"
-    then
-      mv "$TARGET_DIR/depend.make"{,.bk}
-    fi
-    # Create new, empty depend.make file
-    echo "# make.sh was here" > "$TARGET_DIR/depend.make"
-    for SRC in $SRC_FILES
-    do
-      EXT="${SRC##*.}"
-      makedepend -DIGL_STATIC_LIBRARY -p "$TARGET_DIR" -o .${EXT}.o -a -f "$TARGET_DIR/depend.make" -w0 $SRC 2>/dev/null 
-      # Add commented self so that next run of make.sh can use this depend.make file
-      echo "#$TARGET_DIR$SRC.o: $SRC" >> "$TARGET_DIR/depend.make"
-    done
-    #echo -e "\033[0;35mHanding off to make $TARGET\033[0m"
-    make -j$NUM_THREADS -f "${TARGET_DIR}/build.make" "${TARGET_DIR}/build" 
-    make_ret="$?"
-    if [ $make_ret -ne 0 ] ; then
-      ret="$make_ret"
-    fi
-  done
-done
-exit $ret

+ 0 - 9
scripts/make_j.sh

@@ -1,9 +0,0 @@
-#!/bin/bash
-
-for i in {1..20}
-do
-  make clean &>/dev/null
-  printf "$i  "
-  t=`(time make -j$i lib&>/dev/null) 2>&1 | grep real | sed -e "s/real[^0-9]*//g"`
-  echo "$t"
-done

+ 0 - 33
scripts/pre-commit.sh

@@ -1,33 +0,0 @@
-#!/bin/sh
-#
-# To enable this hook, issue:
-#
-#     ln -s ../../scripts/pre-commit.sh .git/hooks/pre-commit
-#
-RED='\033[0;31m'
-NC='\033[0m'
-
-## Throw error if any files contain "std::__1"
-
-# list of changed files
-CHANGED=$(git diff --cached --name-only --diff-filter=ACM)
-# Ignore this file!
-CHANGED=$(echo "$CHANGED" | grep -v "scripts/pre-commit.sh")
-# Changed files containing the namespace "std::__1"
-STD1=$(grep -Il "std::__1" $CHANGED)
-if  [ $? -eq 0 ]; then
-  STD1=$(echo "$STD1" | sed -e "s/^/  /")
-  >&2 echo "[pre-commit hook] Error: Commit prohibited.
-
-The following files contain the offensive \"std::__1\" namespace: 
-
-${RED}$STD1${NC}
-
-Consider issuing:
-
-    sed -i '' -e \"s/std::__1/std/g\"" $STD1
-
-  exit 1
-else
-  exit 0
-fi

+ 0 - 16
scripts/self_assignment.rb

@@ -1,16 +0,0 @@
-#!/usr/bin/env ruby
-
-filename = nil
-lineno = nil
-ARGF.each do |line|
-  if ARGF.filename != filename
-    filename = ARGF.filename
-    lineno = ARGF.lineno-1
-  end
-  if line =~ /^ *([A-z0-9]*) *=/
-    left = $1
-    if line =~ /=.*#{left}.*/
-      printf "%s:%d  %s",ARGF.filename, ARGF.lineno-lineno, line
-    end
-  end
-end

+ 0 - 37
scripts/update_gh-pages.sh

@@ -1,37 +0,0 @@
-#!/bin/bash
-# Usage: cd $LIBIGL; scripts/update_gh-pages.sh
-set -o xtrace
-
-HEADER="title: libigl
-author: Alec Jacobson and Daniele Panozzo and others
-css: tutorial/style.css
-html header:   <script type='text/javascript' src='http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
-<link rel='stylesheet' href='http://yandex.st/highlightjs/7.3/styles/default.min.css'>
-<script src='http://yandex.st/highlightjs/7.3/highlight.min.js'></script>
-<script>hljs.initHighlightingOnLoad();</script>
-
-"
-
-echo "$HEADER" \
-  | cat - README.md | multimarkdown -o index.html
-
-echo "$HEADER" \
-  | cat - style-guidelines.md | multimarkdown -o style-guidelines.html
-
-HEADER="title: libigl
-author: Alec Jacobson and Daniele Panozzo and others
-css: ../tutorial/style.css
-html header:   <script type='text/javascript' src='http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
-<link rel='stylesheet' href='http://yandex.st/highlightjs/7.3/styles/default.min.css'>
-<script src='http://yandex.st/highlightjs/7.3/highlight.min.js'></script>
-<script>hljs.initHighlightingOnLoad();</script>
-
-"
-
-echo "$HEADER" \
-  | cat - optional/README.md | multimarkdown -o optional/index.html
-
-multimarkdown tutorial/tutorial.md -o tutorial/tutorial.html
-
-echo "$HEADER" \
-  | cat - coding-guidelines.md | multimarkdown -o coding-guidelines.html

+ 0 - 13
scripts/upload.sh

@@ -1,13 +0,0 @@
-#!/bin/bash
-set -e
-make clean
-zip -9 -r --exclude=@exclude.lst  libigl.zip ../libigl
-scp libigl.zip $WEBSORKINE:www/htdocs-igl/projects/libigl/
-cp *.html ~/Documents/IGL-website/projects/libigl/
-cp file-formats/* ~/Documents/IGL-website/projects/libigl/file-formats/
-VERSION=`grep -v "^\#" VERSION.txt | tr -d '\n'`
-cd ~/Documents/IGL-website/projects/libigl/
-svn up
-sed -ie "s/RELEASE_HISTORY\.txt>[0-9\.]*<\/a>/RELEASE_HISTORY\.txt>$VERSION<\/a>/" index.php
-svn ci -m "update igl version: $VERSION"
-ssh websorkine@web-login.inf.ethz.ch "svn update www/htdocs-igl/"