--- loncom/build/lpml_parse.pl 2001/12/07 04:45:16 1.29
+++ loncom/build/lpml_parse.pl 2002/04/08 10:56:16 1.43
@@ -1,11 +1,16 @@
#!/usr/bin/perl
+# -------------------------------------------------------- Documentation notice
+# Run "perldoc ./lpml_parse.pl" in order to best view the software
+# documentation internalized in this program.
+
+# --------------------------------------------------------- License Information
# The LearningOnline Network with CAPA
# lpml_parse.pl - Linux Packaging Markup Language parser
#
-# $Id: lpml_parse.pl,v 1.29 2001/12/07 04:45:16 harris41 Exp $
+# $Id: lpml_parse.pl,v 1.43 2002/04/08 10:56:16 harris41 Exp $
#
-# Written by Scott Harrison, harris41@msu.edu
+# Written by Scott Harrison, codeharrison@yahoo.com
#
# Copyright Michigan State University Board of Trustees
#
@@ -35,7 +40,9 @@
# 9/5/2001,9/6,9/7,9/8 - Scott Harrison
# 9/17,9/18 - Scott Harrison
# 11/4,11/5,11/6,11/7,11/16,11/17 - Scott Harrison
-# 12/2,12/3,12/4,12/5,12/6 - Scott Harrison
+# 12/2,12/3,12/4,12/5,12/6,12/13,12/19,12/29 - Scott Harrison
+# YEAR=2002
+# 1/8,1/9,1/29,1/31,2/5,3/21,4/8 - Scott Harrison
#
###
@@ -56,7 +63,8 @@
#
# I am using a multiple pass-through approach to parsing
# the lpml file. This saves memory and makes sure the server
-# will never be overloaded.
+# will never be overloaded. At some point, I expect the
+# first two steps will be implemented with my XFML
#
# This is meant to parse files meeting the lpml document type.
# See lpml.dtd. LPML=Linux Packaging Markup Language.
@@ -82,7 +90,7 @@ END
# ------------------------------------------------- Grab command line arguments
-my $mode;
+my $mode='';
if (@ARGV==5) {
$mode = shift @ARGV;
}
@@ -93,20 +101,20 @@ else {
exit -1; # exit with error status
}
-my $categorytype;
+my $categorytype='';
if (@ARGV) {
$categorytype = shift @ARGV;
}
-my $dist;
+my $dist='';
if (@ARGV) {
$dist = shift @ARGV;
}
-my $targetroot;
-my $sourceroot;
-my $targetrootarg;
-my $sourcerootarg;
+my $targetroot='';
+my $sourceroot='';
+my $targetrootarg='';
+my $sourcerootarg='';
if (@ARGV) {
$sourceroot = shift @ARGV;
}
@@ -128,15 +136,15 @@ if ($mode eq 'install' or $mode eq 'conf
# 1st argument (mode) is: $mode
# 2nd argument (category type) is: $categorytype
# 3rd argument (distribution) is: $dist
-# 4th argument (targetroot) is: described below
-# 5th argument (sourceroot) is: described below
+# 4th argument (sourceroot) is: described below
+# 5th argument (targetroot) is: described below
END
}
# ---------------------------------------------------- Start first pass through
my @parsecontents = <>;
my $parsestring = join('',@parsecontents);
-my $outstring;
+my $outstring='';
# Need to make a pass through and figure out what defaults are
# overrided. Top-down overriding strategy (leaves don't know
@@ -150,7 +158,7 @@ $parser = HTML::TokeParser->new(\$parses
die('can\'t create TokeParser object');
$parser->xml_mode('1');
my %hash;
-my $key;
+my $key='';
while ($token = $parser->get_token()) {
if ($token->[0] eq 'S') {
$hloc++;
@@ -171,9 +179,9 @@ while ($token = $parser->get_token()) {
}
# --------------------------------------------------- Start second pass through
-undef $hloc;
-undef @hierarchy;
-undef $parser;
+undef($hloc);
+undef(@hierarchy);
+undef($parser);
$hierarchy[0]=0;
$parser = HTML::TokeParser->new(\$parsestring) or
die('can\'t create TokeParser object');
@@ -206,7 +214,7 @@ while ($token = $parser->get_token()) {
$cleanstring.=$token->[4];
}
if ($token->[4]=~/\/>$/) {
- $hloc--;
+# $hloc--;
}
}
if ($token->[0] eq 'E') {
@@ -279,10 +287,6 @@ my $link_count;
my $fileglob_count;
my $fileglobnames_count;
my %categorycount;
-# START TEMP WAY
-#my %bytecount; # TEMP WAY TO COUNT INFORMATION
-#my %linecount; # TEMP WAY TO COUNT INFORMATION
-# END TEMP WAY
my @buildall;
my @buildinfo;
@@ -298,6 +302,8 @@ $parser->xml_mode('1');
# Define handling methods for mode-dependent text rendering
$parser->{textify}={
+ specialnotices => \&format_specialnotices,
+ specialnotice => \&format_specialnotice,
targetroot => \&format_targetroot,
sourceroot => \&format_sourceroot,
categories => \&format_categories,
@@ -319,6 +325,7 @@ $parser->{textify}={
rpmAutoReqProv => \&format_rpmAutoReqProv,
rpmdescription => \&format_rpmdescription,
rpmpre => \&format_rpmpre,
+ rpmRequires => \&format_rpmRequires,
directories => \&format_directories,
directory => \&format_directory,
categoryname => \&format_categoryname,
@@ -365,13 +372,6 @@ exit;
# ------------------------ Final output at end of markup parsing and formatting
sub end {
if ($mode eq 'html') {
- # START TEMP WAY
-# my $totallinecount;
-# my $totalbytecount;
-# map {$totallinecount+=$linecount{$_};
-# $totalbytecount+=$bytecount{$_}}
-# @categorynamelist;
- # END TEMP WAY
return "
".
"Summary of Source Repository".
"".
@@ -399,23 +399,16 @@ sub end {
"
Icon | Name | Number of Occurrences | ". + "Number of Incorrect Counts | ". + "
---|---|---|---|
". - " | $_ | $categorycount{$_} | $_ | $categorycount{$_} | ". + ""} @categorynamelist)). " |