#/*******************************************************************************
# * Copyright (c) 2010, 2011 Eclipse Foundation and others.
# * All rights reserved. This program and the accompanying materials
# * are made available under the terms of the Eclipse Public License v1.0
# * which accompanies this distribution, and is available at
# * http://www.eclipse.org/legal/epl-v10.html
# *
# * Contributors:
# *    Wayne Beaton (Eclipse Foundation)- initial API and implementation
# *******************************************************************************/
# This script generates a diff between the 2010 and 2011 versions of the development process
#

wget http://local.eclipse.org/projects/dev_process/development_process_2010.php -O - | tr '\n' ' ' | perl -pe 's|^.*<div id="midcolumn">(.*)<!\-\- midcolumn \-\->.*$|\1|' | perl -pe 's|<div class="comment">.*?</div>||g' | perl -pe 's|</?a[^>]*>||g' | tidy -wrap 72 --tidy-mark false > /tmp/2010.html
wget http://local.eclipse.org/projects/dev_process/development_process_2011.php -O - | tr '\n' ' ' | perl -pe 's|^.*<div id="midcolumn">(.*)<!\-\- midcolumn \-\->.*$|\1|' | perl -pe 's|<div class="comment">.*?</div>||g' | perl -pe 's|</?a[^>]*>||g' | tidy -wrap 72 --tidy-mark false > /tmp/2011.html

# Generate a PDF
htmldoc --book --no-title --no-toc -t pdf11 --webpage - < /tmp/2011.html > development_process_2011.pdf

wdiff /tmp/2010.html /tmp/2011.html | perl -pe 's|\[\-|<strike>|g' | perl -pe 's|\-\]|</strike>|g' | perl -pe 's|\{\+|<font color="green">|g' | perl -pe 's|\+\}|</font>|g' > development_process_2011_diff.html

htmldoc --book --no-title --no-toc -t pdf11 --webpage - < development_process_2011_diff.html > development_process_2011_diff.pdf
