--- loncom/xml/style.pm 2001/11/29 19:03:58 1.13 +++ loncom/xml/style.pm 2003/06/09 21:46:11 1.17 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Style Parser Module (new version) # -# $Id: style.pm,v 1.13 2001/11/29 19:03:58 www Exp $ +# $Id: style.pm,v 1.17 2003/06/09 21:46:11 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -77,24 +77,27 @@ sub styleparser { if ($stoken->[0] eq 'T') { $current_value .= $stoken->[1]; } elsif ($stoken->[0] eq 'S') { - my $number = &testkey($stoken->[0],$stoken->[1],@keys); + my $number=-1; + if ($stoken->[1] ne "$current_key") { + $number = &testkey($stoken->[0],$stoken->[1],@keys); + } if ($number != -1) { $current_value .= &testvalue($number,$stoken->[0],$stoken->[2],@values); } else { $current_value .= $stoken->[4]; - } + } } else { - my $number = &testkey($stoken->[0],$stoken->[1],@keys); + my $number=-1; + if (('/'.$stoken->[1]) ne "$current_key") { + $number = &testkey($stoken->[0],$stoken->[1],@keys); + } if ($number != -1) { $current_value .= &testvalue($number,$stoken->[0],$stoken->[2],@values); } else { $current_value .= $stoken->[2]; - } + } } - - - - } + } } $current_value =~ s/\n//g; ########### @@ -102,8 +105,12 @@ sub styleparser { # $current_value =~ s/\s*$//g; # $current_value =~ s/\( (\w)/($1/g; ########### - push @values,$current_value; -# &Apache::lonxml::debug("a:$current_value $#values \n"); + if ($current_value) { + push(@values,$current_value); + #&Apache::lonxml::debug("a:$current_value: $#values \n"); + } else { + pop(@keys); + } $current_key = ''; $current_value =''; $b_pos = index($content_style_string,' $style_for_target{$current_key}\n"); @@ -150,12 +156,12 @@ sub testvalue { my ($number,$zeroth,$second,@values) = @_; my $current_content = $values[$number]; if ($zeroth eq 'S') { - my %tempo_hash = %$second; - while ((my $current_k,my $current_v) = each %tempo_hash) { - $current_content =~ s/\$$current_k/$current_v/g; - } + my %tempo_hash = %$second; + while ((my $current_k,my $current_v) = each %tempo_hash) { + $current_content =~ s/\$$current_k/$current_v/g; + } } elsif ($zeroth eq 'E') { - $current_content = $values[$number]; + $current_content = $values[$number]; } return $current_content; }