brandingserver/tools/xml/loc2xml.pl
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 14 May 2010 16:10:48 +0300
changeset 23 56a17d4c96b8
parent 21 5872ac9a5671
child 26 f4f0635530ce
permissions -rw-r--r--
Revision: 201017 Kit: 201019

#
# Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies).
# All rights reserved.
# This component and the accompanying materials are made available
# under the terms of "Eclipse Public License v1.0"
# which accompanies this distribution, and is available
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
#
# Initial Contributors:
# Nokia Corporation - initial contribution.
#
# Contributors:
#
# Description:   Converts loc file into branding xml file
#

#------------------------------------------------------------------------------
# Trim string
#------------------------------------------------------------------------------
#
sub trim($)
{
	my $string = shift;
	$string =~ s/^[ ]+//;
	$string =~ s/[ ]+$//;
	return $string;
}


#------------------------------------------------------------------------------
# Prints usage information
#------------------------------------------------------------------------------
#
sub UsageInformation
{
    print <<EOF;
LOC2XML.PL
converts loc file into branding xml file. XML file is overwritten!

Usage:
loc2xml.pl [in file:loc] [out file:xml] [brand_id] [application_id]
           [language id] [version]
EOF

    exit;
}

#------------------------------------------------------------------------------
# Reads LOC file and constructs associative array
#------------------------------------------------------------------------------
#
sub ReadLocFile
{
# Parse LOC file
my $infile = shift;
open(INPUT, $infile) || die "Can't open file: '$infile'";   # Open the file
my %array = ();

while( <INPUT> )
    {
    $_ = trim( $_ );
    if( /^\#define\s+qtn.+\s+\".+\"/i )
        {
        # find ID
        /(qtn[\w\d_]+)/i;
        $id = $1;
        $id =~ s/_//g;      # remove all '_' chars

        #find value
        /\"(.+)\"/i;
        $value = $1;

        $array{$id} = $value;
#        print "$id \t: \'$value\'\n\r"
        }
    }
close(INPUT);			    # Close the file

return %array;
}

#------------------------------------------------------------------------------
# Write XML file from given array
#------------------------------------------------------------------------------
#
sub WriteXmlFile
{
my %strings = @_;
open( OUTPUT, ">$ARGV[1]" ) || die "Can't open file: '$ARGV[1]'";


print OUTPUT <<EOF;
<?xml version="1.0" encoding="ISO-8859-1"?>
<branding>
    <brand>
        <application_id>$ARGV[3]</application_id>
        <brand_id>$ARGV[2]</brand_id>
        <brand_language_id>$ARGV[4]</brand_language_id>
        <brand_version>$ARGV[5]</brand_version>

EOF

while( ($key, $value) = each(%strings) )
    {
    print OUTPUT <<EOF;
        <element id="$key" type="text">
         <element_value>$value</element_value>
        </element>

EOF
    }

print OUTPUT "    </brand>\n";
print OUTPUT "</branding>\n";

close( OUTPUT );
}

#------------------------------------------------------------------------------
# Main function
#------------------------------------------------------------------------------
#

# Check parameters
my $count = @ARGV;
if( $count != 6 )
    {
    UsageInformation();
    }

# Parse LOC file
my %strings = &ReadLocFile( $ARGV[0] );

# Write XML file
WriteXmlFile( %strings );

# Done!
my @list = %strings;
$count = @list / 2;
print "Processed succesfully $count strings."

# end of file