File:  [LON-CAPA] / loncom / build / lpml_parse.pl
Revision 1.2: download - view: text, annotated - select for diffs
Wed Jun 20 12:32:54 2001 UTC (22 years, 11 months ago) by albertel
Branches: MAIN
CVS tags: HEAD
- started the parser

    1: #!/usr/bin/perl
    2: 
    3: # Scott Harrison
    4: # May 2001
    5: # 06/19/2001 - Scott Harrison
    6: 
    7: use HTML::TokeParser;
    8: 
    9: my $target = shift @ARGV;
   10: my $dist = shift @ARGV;
   11: 
   12: my @parsecontents = <>;
   13: my $parsestring = join('',@parsecontents);
   14: my $outstring;
   15: 
   16: $outstring = &xmlparse($parsestring,$target,$dist);
   17: print $outstring;
   18: 
   19: # -------------------------- Parse for an input string and specific target mode
   20: sub xmlparse {
   21:     my ($parsestring,$target,$dist)=@_;
   22:     my $outtext = '';
   23:     my $parser = HTML::TokeParser->new($parsestring);
   24:     $parser->xml_mode('1');
   25:     # strategy: grab first and pass well-parsed information to info-handler subroutines
   26:     # There should be errors if bad file format.
   27:     # Unlike other XML-handling strategies we use, this script should
   28:     # terminate if the XML is bad.
   29:     # grab first (and only) lpml section
   30:     # grab target(s) root
   31:     # grab source root
   32:     # grab categories
   33:        # foreach category
   34:        # attributes: name and type
   35:        # grab chown
   36:        # grab chmod
   37:          # parse user name and group name
   38:     # grab rpm (remember to replace \n with real new lines)
   39:        # grab rpmSummary
   40:        # grab rpmName
   41:        # grab rpmVersion
   42:        # grab rpmRelease
   43:        # grab rpmVendor
   44:        # grab rpmBuildRoot
   45:        # grab rpmCopyright
   46:        # grab rpmGroup
   47:        # grab rpmSource
   48:        # grab rpmAutoReqProv
   49:        # grab rpmdescription
   50:        # grab rpmpre
   51:     # grab directories
   52:        # foreach directory
   53:        # grab targetdir(s)
   54:        # grab categoryname
   55:        # grab (optional) description
   56:     # grab files
   57:        # foreach file|link|link|fileglob
   58:        # grab source
   59:        # grab target(s)
   60:        # grab categoryname
   61:        # grab description
   62:        # grab note
   63: }
   64: 
   65: __END__
   66: 
   67: while (my $token = $p->get_tag("category")) {
   68:     my $url = $token->[1]{name} . $token->[1]{type};
   69:     my $chmodtoken=$p->get_tag("chmod");
   70:     my $text = $p->get_trimmed_text("/chmod");
   71:     print "CHMOD: $text\n";
   72:     my $text = $p->get_trimmed_text("/category");
   73:     print "$url\t$text\t".join(" ",@{$token->[2]})."\n";
   74: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>