You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.1 KiB
96 lines
2.1 KiB
#! /usr/bin/env perl
|
|
#
|
|
# rc2kcfgxt.pl version 4 by Adriaan de Groot
|
|
#
|
|
# This code is released to the Public Domain.
|
|
#
|
|
|
|
#
|
|
# Usage: rc2kcfgtxt.pl < rcfile > xmlfile
|
|
#
|
|
# Reads an rcfile (say, kmailrc) and writes out an KConfigXT XML
|
|
# file that represents a reasonable guess for representing the
|
|
# rc file. No guarantees about well-formedness of the XML are made.
|
|
#
|
|
|
|
#
|
|
# rc2kcfgxt.pl only guesses types Bool, UInt, and IntList.
|
|
# Everything else is a String. You may need to edit the various
|
|
# types. As of 4-1-2003, valid types are:
|
|
#
|
|
# type (String|StringList|Font|Rect|Size|Color|
|
|
# Point|Int|UInt|Bool|Double|DateTime|
|
|
# Int64|UInt64|IntList|Enum|Path) #REQUIRED
|
|
#
|
|
|
|
$group="" ;
|
|
$key="";
|
|
|
|
print <<EOF;
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE kcfg SYSTEM "http://www.kde.org/standards/kcfg/1.0/kcfg.dtd">
|
|
<kcfg>
|
|
EOF
|
|
|
|
while(<>)
|
|
{
|
|
chomp;
|
|
next unless $_;
|
|
if (/\[([-A-Za-z 0-9]+)\]/)
|
|
{
|
|
$grp = $1;
|
|
print " </group>\n" if ($group && (not $group =~ /^MainWindow/));
|
|
$group=$grp;
|
|
next if ($group =~ /^MainWindow/);
|
|
print " <group name=\"$group\">\n";
|
|
next;
|
|
}
|
|
|
|
next if $group =~ /^MainWindow/ ;
|
|
|
|
@l = split /=/;
|
|
$key = shift @l;
|
|
$value = join "=",@l;
|
|
$cfgkeyexpr = "";
|
|
|
|
# Escape value values that are special to XML
|
|
$value =~ s/</</;
|
|
$value =~ s/>/>/;
|
|
$value =~ s/"/"/;
|
|
|
|
if ($key =~ /[ -,.<>;:!\]\[|}{]/)
|
|
{
|
|
$cfgkeyexpr = "key=\"$key\"";
|
|
@key_parts = split /[ -,.<>;:!\]\[|}{]/,$key;
|
|
$key = "";
|
|
foreach $i (@key_parts)
|
|
{
|
|
next unless $i;
|
|
$i =~ /([a-zA-Z0-9_])([a-zA-Z0-9_]*)/;
|
|
$first = $1;
|
|
$second = $2;
|
|
$first =~ tr/a-z/A-Z/;
|
|
$key .= $first . $second;
|
|
}
|
|
}
|
|
|
|
# Find key type
|
|
$type="";
|
|
$type="Bool" if ( $value =~ /^(true|false|TRUE|FALSE)$/);
|
|
$type="UInt" if ( $value =~ /^[0-9]+$/);
|
|
$type="IntList" if ( ( not $type ) && ( $value =~ /^[0-9,]+$/ ));
|
|
$type="String" unless $type;
|
|
|
|
print <<EOF;
|
|
<entry name="$key" $cfgkeyexpr type="$type">
|
|
<label>
|
|
</label>
|
|
<default>$value</default>
|
|
</entry>
|
|
EOF
|
|
}
|
|
|
|
print " </group>\n" if ($group && (not $group =~ /^MainWindow/));
|
|
|
|
print "\n</kcfg>\n";
|