File indexing completed on 2024-04-21 05:41:54

0001 #!/usr/bin/perl -w
0002 
0003 # Laurent Montel <montel@kde.org> (2014)
0004 # KMenu => QMenu
0005 # find -iname "*.cpp" -o -iname "*.h" |xargs kde-dev-scripts/kf5/convert-kmenu.pl
0006 
0007 use strict;
0008 use File::Basename;
0009 use lib dirname($0);
0010 use functionUtilkde;
0011 
0012 foreach my $file (@ARGV) {
0013 
0014     my $modified;
0015     open(my $FILE, "<", $file) or warn "We can't open file $file:$!\n";
0016     my %varname = ();
0017 
0018     my @l = map {
0019         my $orig = $_;
0020         my $regexpKMenuLocal = qr/
0021           ^(\s*)           # (1) Indentation
0022           KMenu\s+
0023           (\w+)            # (2) variable name
0024           /x; # /x Enables extended whitespace mode
0025         if (my ($left, $var) = $_ =~ $regexpKMenuLocal) {
0026            $varname{$var} = 1;
0027            s/\bKMenu\b/QMenu/;
0028         }
0029 
0030         my $regexp = qr/
0031            ^(\s*)                        # (1) Indentation, possibly "Classname *" (the ? means non-greedy)
0032            (.*?)                         # (2) Possibly "Classname *" (the ? means non-greedy)
0033            (\w+)                         # (3) variable name
0034            \s*=\s*                       #   assignment
0035            new\s+KMenu\s*\((.*)\)        # (4)  new KMenu(...,...,...,...);
0036            (.*)$                         # (5) afterreg
0037            /x; # /x Enables extended whitespace mode
0038         if (my ($indent, $left, $var, $argument, $afterreg) = $_ =~ $regexp) {
0039           warn "KMenu found \'$var\' \'$argument\'\n";
0040            $varname{$var} = 1;
0041            s/\bKMenu\b/QMenu/;
0042         }
0043 
0044         my $regexpKMenuFunction = qr/
0045           (.*?)
0046           KMenu\s*\*
0047           (\w+)            # (2) variable name
0048           /x; # /x Enables extended whitespace mode
0049         if (my ($left, $var) = $_ =~ $regexpKMenuFunction) {
0050            warn "Found KMenu in function!!!! $var\n";
0051            $varname{$var} = 1;
0052            s/\bKMenu\b/QMenu/;
0053         }
0054  
0055         if (/(\w+)\.addTitle\(/) {
0056            my $var = $1;
0057            if ( defined $varname{$var} ) {
0058               s/$var\.addTitle/$var\.addSection/;
0059            }
0060         }
0061         if (/(\w+)->addTitle\s*\(/) {
0062            #warn "found addTitle $1\n";
0063            my $var = $1;
0064            if ( defined $varname{$var} ) {
0065               s/$var\-\>addTitle/$var\-\>addSection/;
0066            }
0067         }
0068 
0069 
0070         s/\bKMenu\b/QMenu/g;
0071         s/\<KMenu\b\>/\<QMenu>/ =~ /#include/ ;
0072         s/\<kmenu.h\>/\<QMenu>/ =~ /#include/ ;
0073 
0074         $modified ||= $orig ne $_;
0075         $_;
0076     } <$FILE>;
0077 
0078     if ($modified) {
0079         open (my $OUT, ">", $file);
0080         print $OUT @l;
0081         close ($OUT);
0082     }
0083 }
0084 
0085 functionUtilkde::diffFile( "@ARGV" );