this repo has no description
at develop 5.4 kB view raw
1#!/usr/bin/perl 2# 3# Main authors: 4# Christian Schulte <schulte@gecode.org> 5# Guido Tack <tack@gecode.org> 6# 7# Copyright: 8# Christian Schulte, 2005 9# Guido Tack, 2006 10# 11# This file is part of Gecode, the generic constraint 12# development environment: 13# http://www.gecode.org 14# 15# Permission is hereby granted, free of charge, to any person obtaining 16# a copy of this software and associated documentation files (the 17# "Software"), to deal in the Software without restriction, including 18# without limitation the rights to use, copy, modify, merge, publish, 19# distribute, sublicense, and/or sell copies of the Software, and to 20# permit persons to whom the Software is furnished to do so, subject to 21# the following conditions: 22# 23# The above copyright notice and this permission notice shall be 24# included in all copies or substantial portions of the Software. 25# 26# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 27# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 28# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 29# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 30# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 31# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 32# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 33# 34# 35 36# 37# Compile changelog 38# 39 40$first = 1; 41$version = ""; 42$info = ""; 43 44$modclear{"kernel"} = "Kernel"; 45$modclear{"search"} = "Search engines"; 46$modclear{"int"} = "Finite domain integers"; 47$modclear{"set"} = "Finite integer sets"; 48$modclear{"cpltset"} = "Finite integer sets with complete representation"; 49$modclear{"minimodel"} = "Minimal modeling support"; 50$modclear{"graph"} = "Graph constraints"; 51$modclear{"scheduling"} = "Scheduling constraints"; 52$modclear{"driver"} = "Script commandline driver"; 53$modclear{"iter"} = "Range and value iterators"; 54$modclear{"support"} = "Support algorithms and datastructures"; 55$modclear{"example"} = "Example scripts"; 56$modclear{"test"} = "Systematic tests"; 57$modclear{"gist"} = "Gist"; 58$modclear{"flatzinc"} = "Gecode/FlatZinc"; 59$modclear{"other"} = "General"; 60 61$whatclear{"bug"} = "Bug fixes"; 62$whatclear{"performance"} = "Performance improvements"; 63$whatclear{"documentation"} = "Documentation fixes"; 64$whatclear{"new"} = "Additions"; 65$whatclear{"removed"} = "Removals"; 66$whatclear{"change"} = "Other changes"; 67 68$rankclear{"minor"} = "minor"; 69$rankclear{"major"} = "major"; 70 71@modorder = ("kernel","search","int","set","cpltset","scheduling", 72 "graph","minimodel","driver", 73 "iter","support","example","test","gist","flatzinc","other"); 74 75@whatorder = ("new","removed","change","bug","performance","documentation"); 76 77foreach $mod (@modorder) { 78 $hastext{$mod} = 0; 79 foreach $what (@whatorder) { 80 $text{"$mod-$what"} = ""; 81 } 82} 83 84while ($l = <STDIN>) { 85 LINE: 86 next if ($l =~ /^\#/); 87 $l =~ s/%Gecode/Gecode/g; 88 if ($l =~ /^\[RELEASE\]/) { 89 # Print previous 90 if (!$first) { 91 print "<ul>\n"; 92 foreach $mod (@modorder) { 93 if ($hastext{$mod}) { 94 print "<li>" . $modclear{$mod} . "\n<ul>\n"; 95 $hastext{$mod} = 0; 96 foreach $what (@whatorder) { 97 if (!($text{"$mod-$what"} eq "")) { 98 print "<li>" . $whatclear{$what} . "\n<ul>"; 99 print $text{"$mod-$what"}; 100 print "</ul></li>\n"; 101 $text{"$mod-$what"} = ""; 102 } 103 } 104 print "</ul></li>\n"; 105 } 106 } 107 print "</ul>\n"; 108 exit(0); 109 } 110 $first = 0; 111 $version = ""; 112 $info = ""; 113 $date = ""; 114 while (($l = <STDIN>) && !($l =~ /\[DESCRIPTION\]/)) { 115 $l =~ s/%Gecode/Gecode/g; 116 if ($l =~ /Version:[\t ]*(.*)$/) { 117 $version = $1; 118 } elsif ($l =~ /Date:[\t ]*(.*)$/) { 119 $date = $1; 120 } 121 } 122 while (($l = <STDIN>) && !($l =~ /\[ENTRY\]/)) { 123 $l =~ s/%Gecode/Gecode/g; 124# chop $l; 125 $info = $info . " " . $l; 126 } 127 goto LINE; 128 } 129 if ($l =~ /^\[ENTRY\]/) { 130 my $mod, $what, $rank, $bug, $desc, $thanks; 131 $desc = ""; 132 $bug = ""; 133 $rank = ""; 134 $what = ""; 135 $mod = ""; 136 $thanks = ""; 137 while (($l = <STDIN>) && !($l =~ /\[DESCRIPTION\]/)) { 138 $l =~ s/%Gecode/Gecode/g; 139 if ($l =~ /Module:[\t ]*(.*)$/) { 140 $mod = $1; 141 } elsif ($l =~ /What:[\t ]*(.*)$/) { 142 $what = $1; 143 } elsif ($l =~ /Rank:[\t ]*(.*)$/) { 144 $rank = $1; 145 } elsif ($l =~ /Bug:[\t ]*(.*)$/) { 146 $bug = $1; 147 } elsif ($l =~ /Thanks:[\t ]*(.*)$/) { 148 $thanks = $1; 149 } 150 } 151 152 while (($l = <STDIN>) && 153 !(($l =~ /\[ENTRY\]/) || ($l =~ /\[RELEASE\]/))) { 154 $l =~ s/%Gecode/Gecode/g; 155# chop $l; 156 if (!($l =~ /\[MORE\]/)) { 157 if ($desc eq "") { 158 $desc = $l; 159 } else { 160 $desc = $desc . " " . $l; 161 } 162 } 163 } 164 chop $desc; 165 $hastext{$mod} = 1; 166 $rb = $rankclear{$rank}; 167 if (!($bug eq "")) { 168 $rb = $rb . ", bugzilla entry $bug"; 169# $rb = $rb . ", <a href=\"http://www.gecode.org/bugzilla/show_bug.cgi?id=" 170# . $bug . "\">bugzilla entry</a>"; 171 } 172 if (!($thanks eq "")) { 173 $rb = $rb . ", thanks to $thanks"; 174 } 175 $text{"$mod-$what"} = 176 ($text{"$mod-$what"} . " <li> $desc(" . $rb . ")</li>\n"); 177 goto LINE; 178 } 179} 180 181print <<EOF 182Initial release (2005-12-06) 183 184 No changes, of course. 185 186EOF 187;