From 3cb39fae6f230bc81b7ca49242b7b1c2e9ae5502 Mon Sep 17 00:00:00 2001 From: Michael Wiebusch Date: Thu, 27 Jun 2013 17:17:21 +0200 Subject: [PATCH] now able to generate an ancestry list recursively, not yet merging with ancestor content --- xml_spielwiese/cgitest.pl | 67 ++++++++++++++++++++++++++------------- 1 file changed, 45 insertions(+), 22 deletions(-) diff --git a/xml_spielwiese/cgitest.pl b/xml_spielwiese/cgitest.pl index 3752713..8b99312 100755 --- a/xml_spielwiese/cgitest.pl +++ b/xml_spielwiese/cgitest.pl @@ -54,9 +54,9 @@ if ( !keys %cgiHash ) exit; } -my $parser = XML::LibXML->new(); -my $specfile = ""; -my $setfile = ""; +my $parser = XML::LibXML->new(); +my $specfile = ""; +my $setfile = ""; my $specfileName = ""; my $setfileName = ""; my $spectree; @@ -70,22 +70,25 @@ my $specDir = '../specs'; if ( $cgiHash{'print'} eq 'fileSelection' ) { print "
File Selection
"; - print_fileSelection($cgiHash{'configFile'}); + print_fileSelection( $cgiHash{'configFile'} ); } if ( $cgiHash{'print'} eq 'spectree' ) { print "
Available Settings
\n"; parseSetAndSpec( $cgiHash{'configFile'} ); - print "
specifications loaded from $specfileName
"; + print +"
specifications loaded from $specfileName
"; print_registers($specfile); } if ( $cgiHash{'print'} eq 'settree' ) { print "
Selected Settings
\n"; parseSetAndSpec( $cgiHash{'configFile'} ); + buildAncestry($setfileName); print "
"; - print "inherit settings from"; + print "inherit settings from:
"; + print join("
",@ancestryList); print "
"; print_registers($setfile); } @@ -125,22 +128,42 @@ sub prepare_text { } sub parseSetAndSpec { - parseSet($_[0]); + parseSet( $_[0] ); $specfileName = $settree->findvalue("/MAPS/\@specDbFile"); - $specfile = $specDir . "/" . $specfileName; - $spectree = $parser->parse_file($specfile); + $specfile = $specDir . "/" . $specfileName; + $spectree = $parser->parse_file($specfile); } sub parseSet { $setfileName = $_[0]; - $setfile = $confDir . "/" . $_[0]; - $settree = $parser->parse_file($setfile); + $setfile = $confDir . "/" . $_[0]; + $settree = $parser->parse_file($setfile); } -sub buildAncestry { # recursive +sub buildAncestry { # recursive + my $xmlfileName = $_[0]; + if ( $xmlfileName eq "" ) { + return; + } + my $xmlfile = $confDir . "/" . $xmlfileName; + my $xmltree; + if ( $xmlfile eq $setfile ) { + $xmltree = $settree; + } + else { + $xmltree = $parser->parse_file($xmlfile); + } + + my $ancestorFileName = $xmltree->findvalue("/MAPS/\@inheritSettingsFrom") || ""; + unless ($ancestorFileName eq ""){ + buildAncestry($ancestorFileName); + push(@ancestryList,$ancestorFileName); + } } + + sub del { my $registerName = $_[0]; @@ -180,10 +203,9 @@ sub del { close SCHREIBEN; } - sub print_fileSelection { - - my $configFile= $_[0]; + + my $configFile = $_[0]; print ""; print ""; @@ -213,7 +235,8 @@ sub print_fileSelection { print ""; print ""; print ""; @@ -229,16 +252,16 @@ sub print_fileSelection { sub changeAncestor { my $ancestorFileName = $_[0]; - my $xmltree=$settree; - my $maps = $xmltree->findnodes("/MAPS")->shift(); - - $maps->setAttribute("inheritSettingsFrom",$ancestorFileName); + my $xmltree = $settree; + my $maps = $xmltree->findnodes("/MAPS")->shift(); + + $maps->setAttribute( "inheritSettingsFrom", $ancestorFileName ); } sub getAncestor { - my $xmltree=$settree; - return ($xmltree->findvalue("/MAPS/\@inheritSettingsFrom")||""); + my $xmltree = $settree; + return ( $xmltree->findvalue("/MAPS/\@inheritSettingsFrom") || "" ); } sub save { -- 2.43.0
"; - print ""; + print +""; print "