Warning, /education/analitza/extractplots is written in an unsupported language. File is not indexed.

0001 #!/usr/bin/env perl
0002 
0003 # Copyright (c) 2012 Pino Toscano <pino@kde.org>
0004 
0005 sub usage
0006 {
0007   warn <<"EOF";
0008 
0009 extractplots [OPTIONS] FILENAMES...
0010 
0011 This script extract descriptions from Analitza plots and
0012 writes on standard output (usually redirected to rc.cpp) the equivalent
0013 tr() calls so that xgettext can parse them.
0014 
0015 --context=name    : Give tr() calls a context name: tr(text, "name")
0016 --help|?          : Display this summary
0017 
0018 EOF
0019 
0020   exit;
0021 }
0022 
0023 ###########################################################################################
0024 
0025 use strict;
0026 use warnings;
0027 use Getopt::Long;
0028 
0029 sub escape_to_c($) {
0030     my $text = shift;
0031 
0032     $text =~ s/\\/\\\\/g; # escape \
0033     $text =~ s/\"/\\\"/g; # escape "
0034 
0035     return $text;
0036 }
0037 
0038 ###########################################################################################
0039 
0040 GetOptions ("context=s"   => \my $opt_context,       # tr() context
0041             "help|?"      => \&usage );
0042 
0043 unless (@ARGV)
0044 {
0045   warn "No filename specified";
0046   exit;
0047 }
0048 
0049 ###########################################################################################
0050 
0051 sub out_message {
0052     my ($ctxt, $text, @cmnts) = @_;
0053     for my $cmnt (@cmnts) {
0054         print qq|// $cmnt\n|;
0055     }
0056     if (defined $text) {
0057         $text = escape_to_c($text);
0058         if (defined $ctxt) {
0059             $ctxt = escape_to_c($ctxt);
0060             print qq|QObject::tr("$text", "$ctxt");\n|;
0061         } else {
0062             print qq|QObject::tr("$text");\n|;
0063         }
0064     }
0065 }
0066 
0067 for my $file_name (@ARGV)
0068 {
0069   my $fh;
0070 
0071   unless (open $fh, "<", $file_name)
0072   {
0073     next;
0074   }
0075 
0076   while (<$fh>)
0077   {
0078     my $string = $_;
0079     if ($string =~ /.*\/\/ *([^ ]*) *\/\/.*/)
0080     {
0081       my @comments = ();
0082 
0083       (my $norm_fname = $file_name) =~ s/^\.\///;
0084       push @comments, "i18n: file: $norm_fname:$.";
0085       out_message($opt_context, $1, @comments);
0086     }
0087   }
0088 
0089   close $fh or warn "Failed to close: '$file_name': $!";
0090 }