OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Michael van Elst Root: /e/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-re Date: 12-Nov-2002 14:47:33 Branch: HEAD Handle: 2002111213473200 Modified files: openpkg-re openpkg-index Log: no more condition sorting to match upn code with static #if structure include module description in RDF Summary: Revision Changes Path 1.4 +42 -20 openpkg-re/openpkg-index ____________________________________________________________________________ Index: openpkg-re/openpkg-index ============================================================ $ cvs diff -u -r1.3 -r1.4 openpkg-index --- openpkg-re/openpkg-index 12 Nov 2002 11:23:27 -0000 1.3 +++ openpkg-re/openpkg-index 12 Nov 2002 13:47:32 -0000 1.4 @@ -100,8 +100,6 @@ # # translate default section from spec-file # into a hash -# extended lines have already been concatenated -# comment lines have already been removed # %if/%ifdef/%define... are translated to #if/#ifdef/#define # # #defines are interpolated (correct ?) @@ -120,6 +118,12 @@ my($l, $v, $cond, $d, $p); my($re,@defs); + # combine multilines + $s =~ s/\\\n/ /sg; + + # remove comments + $s =~ s/^\s*#.*?\n//mg; + # # map conditional variable macros # @@ -161,7 +165,7 @@ if (defined $1) { $term .= " $1 "; } elsif (exists $evar{$2}) { - $term .= ($3 eq 'no' ? '! ' : '').vsub(\%evar,$evar{$2}); + $term .= ($3 eq 'no' ? '! ' : '').vsub(\%evar,'%{'.$2.'}'); } else { die "ERROR: unknown conditional: $l\n== $v\n"; } @@ -172,14 +176,14 @@ # if ($term ne '') { push @term, "( $term )"; - $cond = join(' && ',sort @term).''; + $cond = join(' && ', @term).''; } } elsif ($v =~ /^\#endif\s*$/) { # # unwind last #if expression # pop @term; - $cond = join(' + ',sort @term).''; + $cond = join(' + ', @term).''; } elsif ($v =~ /^\#(?:define)\s*(\S+)\s*(.*?)\s*$/) { @@ -226,12 +230,7 @@ sub spec2data ($) { my($s) = @_; my(%map); - - # combine multilines - $s =~ s/\\\n/ /sg; - - # remove comments - $s =~ s/^\s*#.*?\n//mg; + my($a); # map commands $s =~ s/^%(ifdef|ifndef|if|define|endif|\{)/#$1/mg; @@ -245,7 +244,12 @@ } } - return package2data($map{'*'}); + $a = package2data($map{'*'}); + if (exists $map{'description'}) { + $a->{'Description'} = $map{'description'}; + } + + return $a; } ########################################################################## @@ -282,6 +286,22 @@ } # +# send out $a->{$k} as text-style tag +# +sub xml_text ($$$;$) { + my($i,$a,$k,$tag) = @_; + my($out); + return "" unless exists $a->{$k}; + $tag = $k unless defined $tag; + $i = ' ' x $i; + + $out = e($a->{$k}); + $out .= "\n" unless $out =~ /\n$/s; + + return "$i<$tag>\n$out$i</$tag>\n"; +} + +# # send out @{$a->{$k}} as body of an XML tag # $k is the name of the tag unless overridden by $tag # $i denotes the depth of indentation to form nicely @@ -296,10 +316,11 @@ return "" unless exists $a->{$k}; $tag = $k unless defined $tag; $out = ''; + $i = ' ' x $i; foreach $cond (sort keys %{$a->{$k}}) { $upn = e(upn($cond)); - $out .= (' ' x $i). + $out .= $i. ($cond ne '' ? "<$tag cond=\"$upn\">" : "<$tag>"). join("\n", map { e($_) } @{$a->{$k}->{$cond}}). "</$tag>\n"; @@ -320,17 +341,18 @@ return "" unless exists $a->{$k}; $tag = $k unless defined $tag; $out = ''; + $i = ' ' x $i; foreach $cond (sort keys %{$a->{$k}}) { $upn = e(upn($cond)); - $out .= (' ' x $i). + $out .= $i. ($cond ne '' ? "<$tag cond=\"$upn\">\n" : "<$tag>\n"). - (' ' x ($i+2))."<rdf:bag>\n". + "$i <rdf:bag>\n". join("", - map { (' ' x ($i+4))."<rdf:li>".e($_)."</rdf:li>\n" } + map { "$i <rdf:li>".e($_)."</rdf:li>\n" } @{$a->{$k}->{$cond}}). - (' ' x ($i+2))."</rdf:bag>\n". - (' ' x $i)."</$tag>\n"; + "$i </rdf:bag>\n". + "$i</$tag>\n"; } return $out; @@ -391,7 +413,8 @@ xml_bag(6, $a, 'PreReq'), xml_bag(6, $a, 'Provides'), xml_bag(6, $a, 'Conflicts'), - xml_bag(6, $a, 'Source'); + xml_bag(6, $a, 'Source'), + xml_text(6, $a, 'Description'); print $fh <<EOFEOF; </rdf:Description> @@ -417,7 +440,6 @@ while ($d = $dh->read) { next if $d =~ /^\./; $specpath = "$prefix/$d/$d.spec"; - warn "$specpath\n"; if (-f $specpath) { $s = `cat $specpath`; $a = spec2data($s) ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List [EMAIL PROTECTED]