--- loncom/xml/style.pm 2003/09/19 17:46:59 1.18 +++ loncom/xml/style.pm 2008/11/24 18:55:01 1.22 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Style Parser Module (new version) # -# $Id: style.pm,v 1.18 2003/09/19 17:46:59 sakharuk Exp $ +# $Id: style.pm,v 1.22 2008/11/24 18:55:01 jms Exp $ # # Copyright Michigan State University Board of Trustees # @@ -49,10 +49,10 @@ sub styleparser { my ($target,$content_style_string)=@_; my @keys = (); my @values = (); - my @style_array = (); my $current_value; my $allow=0; my $pstyle = HTML::TokeParser->new(\$content_style_string); + $pstyle->xml_mode('1'); while (my $stoken = $pstyle->get_token) { if (($stoken->[0] eq 'S') && ($stoken->[1] eq 'definetag')) { push @keys,$stoken->[2]->{'name'}; @@ -78,14 +78,14 @@ sub styleparser { $allow=0; } elsif (($target ne 'meta') && ($target ne 'tex') && ($stoken->[0] eq 'E') && ($stoken->[1] eq 'tex')) { $allow=1; - } elsif (($stoken->[0] eq 'S') && ($stoken->[1] eq 'target') && ($stoken->[2]->{'name'} ne $target)) { + } elsif (($stoken->[0] eq 'S') && ($stoken->[1] eq 'target') && (not $stoken->[2]->{'name'}=~/(^\s*$target\s*,|,\s*$target\s*,|,\s*$target\s*$|^\s*$target\s*$)/)) { $allow=0; } elsif (($stoken->[0] eq 'E') && ($stoken->[1] eq 'target')) { $allow=1; } elsif (($target ne 'meta') && ($stoken->[0] eq 'S') && ($stoken->[1] eq $target)) { $allow=1; } elsif (($target ne 'meta') && ($stoken->[0] eq 'E') && ($stoken->[1] eq $target)) { - } elsif (($stoken->[0] eq 'S') && ($stoken->[1] eq 'target') && ($stoken->[2]->{'name'} eq $target)) { + } elsif (($stoken->[0] eq 'S') && ($stoken->[1] eq 'target') && ($stoken->[2]->{'name'}=~/(^\s*$target\s*,|,\s*$target\s*,|,\s*$target\s*$|^\s*$target\s*$)/)) { $allow=1; } elsif ($allow) { if ($stoken->[0] eq 'T') { @@ -113,10 +113,12 @@ sub styleparser { } } } + my %style_for_target; for (my $i=0; $i<=$#keys; $i++) { - push @style_array,$keys[$i],$values[$i]; + if ($values[$i] !~ /^\s*$/) { + $style_for_target{$keys[$i]}=$values[$i]; + } } - my %style_for_target = @style_array; return %style_for_target; } @@ -161,3 +163,32 @@ sub testvalue { 1; __END__ + +=pod + +=head1 NAME + +Apache::style.pm + +=head1 SYNOPSIS + +Style parsing module + +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + + +=head1 SUBROUTINES + +=over + +=item styleparser() + +=item testkey() + +=item testvalue() + +=back + +=cut +