Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-2.0.x
[OpenFOAM-2.0.x.git] / doc / tools / fix-Class
blobfbcca6c36fdd05f9117167cd22a766bd7f0dc48f
1 #!/bin/sh
2 # -----------------------------------------------------------------------------
3 # ========= |
4 # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 # \\ / O peration |
6 # \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
7 # \\/ M anipulation |
8 # ------------------------------------------------------------------------------
9 # License
10 # This file is part of OpenFOAM.
12 # OpenFOAM is free software: you can redistribute it and/or modify it
13 # under the terms of the GNU General Public License as published by
14 # the Free Software Foundation, either version 3 of the License, or
15 # (at your option) any later version.
17 # OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
18 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
20 # for more details.
22 # You should have received a copy of the GNU General Public License
23 # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 # Script
26 # fix-Class
28 # Description
29 # Process the lists given on the command line.
30 # Column 1 = fileName, column 2 = Class or action
31 # See find-suspiciousTags for details.
33 # 1. fix ClassWithTrailingInformation by hand
34 # 2. InClass and InNamespace fixup
35 # 3. change
36 # |Class
37 # | anything
38 # ->
39 # |Class
40 # | className
42 # -----------------------------------------------------------------------------
44 # stop if trailing junk has been detected
45 for fileList
47 [ -f $fileList -a -r $fileList ] || {
48 echo "cannot read file list: $fileList"
49 exit 1
52 grep ClassWithTrailingInformation $fileList
53 if [ $? = 0 ]
54 then
55 echo "#"
56 echo "# fix ClassWithTrailingInformation by hand"
57 echo "#"
58 exit 99
60 done
62 for fileList
64 # repair InClass, InNamespace
65 for tag in Class Namespace
67 backup=".repair-In$tag"
68 for file in $(sed -n -e "s/In$tag *$//p" $fileList)
70 echo "repair In$tag: $file"
71 perl -i$backup -pe "s/^$tag/In$tag/" $file
72 done
73 done
75 # repair the class names (with namespace)
76 backup=".repair-reclassify"
77 cat $fileList | while read fileName className
79 # use classes with '::' separator to avoid too
80 # many false positives
81 perl -i$backup -x $0 $fileName $className
82 done
83 done
85 exit 0
87 # ---------------------------------------------------------------- end-of-file
88 # embedded Perl program
89 #!/usr/bin/perl -w
90 use strict;
92 # args: fileName className
93 # - className must contain '::'
94 my $className = pop;
95 @ARGV == 1 and ($className ||= '') =~ /::/ or exit 1;
97 warn "repair: @ARGV $className\n";
99 while (<>)
101 if (/^Class\s*$/) {
102 print;
103 $_ = <>; # get and discard the next line
104 $_ = " $className\n";
107 print;
110 # ---------------------------------------------------------------- end-of-file