diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2012-09-22 01:03:56 +0000 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2012-09-22 03:05:13 +0200 |
commit | 19bb2b8e8e990928bfd8e57bb8147cc34ae272d0 (patch) | |
tree | d51321353ce65a60ab9ab14a54fb7347010824a4 /scripts/xmi2qt.pl | |
parent | a202c7955689ca09604e72e28840c5b48078e32e (diff) |
Add initial version of xquery xmi -> qtxmi transformation
Change-Id: If1eef69cd8649a373ab81329b8fb5313e32ae6a9
Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'scripts/xmi2qt.pl')
-rwxr-xr-x | scripts/xmi2qt.pl | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/scripts/xmi2qt.pl b/scripts/xmi2qt.pl new file mode 100755 index 00000000..a2ec9951 --- /dev/null +++ b/scripts/xmi2qt.pl @@ -0,0 +1,53 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use XML::Simple; +use Data::Dumper; +use File::Slurp; +use Template; + +my $xml = new XML::Simple(keyattr => ['name'], ForceArray => ['generalization', 'ownedAttribute', 'ownedOperation', 'ownedParameter']); + +my $xmi = $xml->XMLin($ARGV[0]); +write_file 'dump.log', Dumper($xmi); + +my $classesKernel = $xmi->{'uml:Package'}->{'packagedElement'}->{'Classes'}->{'packagedElement'}->{'Kernel'}->{'packagedElement'}; + +my $tt = Template->new(INTERPOLATE => 1, INCLUDE_PATH => 'templates/'); + +open STDOUT, '>', "./uml.pro"; +if ($tt->process('template.pro', { +currentPackage => 'Classes::Kernel', +classes => $classesKernel +}) ne 1) { print $tt->error(); } + +open STDOUT, '>', "./Classes/Kernel/qtenumeration.h"; +if ($tt->process('qtenumeration.h', { +currentPackage => 'Classes::Kernel', +package => $classesKernel +}) ne 1) { print $tt->error(); } + +open STDOUT, '>', "./Classes/Kernel/qtenumeration.cpp"; +if ($tt->process('qtenumeration.cpp', { +currentPackage => 'Classes::Kernel', +package => $classesKernel +}) ne 1) { print $tt->error(); } + +foreach my $key (keys $classesKernel) { + if ($classesKernel->{$key}->{'xmi:type'} eq 'uml:Class' ) { + open STDOUT, '>', "./Classes/Kernel/q".lc($key).".h"; + if ($tt->process('class.h', { + currentPackage => 'Classes::Kernel', + className => $key, + classData => $classesKernel->{$key}, + }) ne 1) { print $tt->error(); } + open STDOUT, '>', "./Classes/Kernel/q".lc($key).".cpp"; + if ($tt->process('class.cpp', { + currentPackage => 'Classes::Kernel', + className => $key, + classData => $classesKernel->{$key}, + }) ne 1) { print $tt->error(); } + } +} + |