Annotation of loncom/build/lpml_parse.pl, revision 1.3
1.1 harris41 1: #!/usr/bin/perl
1.2 albertel 2:
3: # Scott Harrison
4: # May 2001
1.3 ! harris41 5: # 06/19/2001,06/20,06/24 - Scott Harrison
! 6:
! 7: # I am using a multiple pass-through approach to parsing
! 8: # the lpml file. This saves memory and makes sure the server
! 9: # will never be overloaded.
1.2 albertel 10:
1.1 harris41 11: use HTML::TokeParser;
1.2 albertel 12:
1.3 ! harris41 13: my $usage=<<END;
! 14: **** ERROR ERROR ERROR ERROR ****
! 15: Usage is for lpml file to come in through standard input.
! 16: 1st argument is the mode of parsing.
! 17: 2nd argument is the distribution (default,redhat6.2,debian2.2,redhat7.1,etc).
! 18: 3rd argument is to manually specify a sourceroot.
! 19: 4th argument is to manually specify a targetroot.
! 20:
! 21: Only the 1st argument is mandatory for the program to run.
! 22:
! 23: Example:
! 24:
! 25: cat ../../doc/loncapafiles.lpml |\\
! 26: perl lpml_parse.pl html default /home/sherbert/loncapa /tmp/install
! 27: END
! 28:
! 29: # ------------------------------------------------- Grab command line arguments
! 30:
! 31: my $mode;
! 32: if (@ARGV) {
! 33: $mode = shift @ARGV;
! 34: }
! 35: else {
! 36: while(<>){} # throw away the input to avoid broken pipes
! 37: print $usage;
! 38: exit -1; # exit with error status
! 39: }
! 40:
! 41: my $dist;
! 42: if (@ARGV) {
! 43: $dist = shift @ARGV;
! 44: }
1.2 albertel 45:
1.3 ! harris41 46: my $targetroot;
! 47: my $sourceroot;
! 48: if (@ARGV) {
! 49: $targetroot = shift @ARGV;
! 50: }
! 51: if (@ARGV) {
! 52: $sourceroot = shift @ARGV;
! 53: }
! 54:
! 55: # ---------------------------------------------------- Start first pass through
1.2 albertel 56: my @parsecontents = <>;
57: my $parsestring = join('',@parsecontents);
58: my $outstring;
59:
1.3 ! harris41 60: # Need to make a pass through and figure out what defaults are
! 61: # overrided. Top-down overriding strategy (leaves don't know
! 62: # about distant leaves).
! 63:
! 64: my @hierarchy;
! 65: $hierarchy[0]=0;
! 66: my $hloc=0;
! 67: my $token;
! 68: $parser = HTML::TokeParser->new(\$parsestring) or
! 69: die('can\'t create TokeParser object');
! 70: $parser->xml_mode('1');
! 71: my %hash;
! 72: my $key;
! 73: while ($token = $parser->get_token()) {
! 74: if ($token->[0] eq 'S') {
! 75: $hloc++;
! 76: $hierarchy[$hloc]++;
! 77: $key=$token->[1].join(',',@hierarchy[0..($hloc-1)]);
! 78: my $thisdist=' '.$token->[2]{'dist'}.' ';
! 79: if ($thisdist eq ' default ') {
! 80: $hash{$key}=1; # there is a default setting for this key
! 81: }
! 82: elsif ($dist && $hash{$key}==1 && $thisdist=~/\s$dist\s/) {
! 83: $hash{$key}=2; # disregard default setting for this key if
! 84: # there is a directly requested distribution match
! 85: }
! 86: }
! 87: if ($token->[0] eq 'E') {
! 88: $hloc--;
! 89: }
! 90: }
! 91:
! 92: # --------------------------------------------------- Start second pass through
! 93: undef $hloc;
! 94: undef @hierarchy;
! 95: undef $parser;
! 96: $hierarchy[0]=0;
! 97: $parser = HTML::TokeParser->new(\$parsestring) or
! 98: die('can\'t create TokeParser object');
! 99: $parser->xml_mode('1');
! 100: my $cleanstring;
! 101: while ($token = $parser->get_token()) {
! 102: if ($token->[0] eq 'S') {
! 103: $hloc++;
! 104: $hierarchy[$hloc]++;
! 105: $key=$token->[1].join(',',@hierarchy[0..($hloc-1)]);
! 106: my $thisdist=' '.$token->[2]{'dist'}.' ';
! 107: if ($hash{$key}==2 and
! 108: !($thisdist eq ' ' or $thisdist =~/\s$dist\s/)) {
! 109: if ($token->[4]!~/\/>$/) {
! 110: $parser->get_tag('/'.$token->[1]);
! 111: $hloc--;
! 112: }
! 113: }
! 114: elsif ($thisdist ne ' ' and $thisdist!~/\s$dist\s/ and
! 115: !($thisdist eq ' default ' and $hash{$key}!=2)) {
! 116: if ($token->[4]!~/\/>$/) {
! 117: $parser->get_tag('/'.$token->[1]);
! 118: $hloc--;
! 119: }
! 120: }
! 121: else {
! 122: $cleanstring.=$token->[4];
! 123: }
! 124: if ($token->[4]=~/\/>$/) {
! 125: $hloc--;
! 126: }
! 127: }
! 128: if ($token->[0] eq 'E') {
! 129: $cleanstring.=$token->[2];
! 130: $hloc--;
! 131: }
! 132: if ($token->[0] eq 'T') {
! 133: $cleanstring.=$token->[1];
! 134: }
! 135: }
! 136: $cleanstring=&trim($cleanstring);
! 137:
! 138: # ---------------------------------------------------- Start final pass through
! 139:
! 140: # storage variables
! 141: my $lpml;
! 142: my $categories;
! 143: my $category;
! 144: my $category_att_name;
! 145: my $category_att_type;
! 146: my $chown;
! 147: my $chmod;
! 148: my $rpm;
! 149: my $rpmSummary;
! 150: my $rpmName;
! 151: my $rpmVersion;
! 152: my $rpmRelease;
! 153: my $rpmVendor;
! 154: my $rpmBuildRoot;
! 155: my $rpmCopyright;
! 156: my $rpmGroup;
! 157: my $rpmSource;
! 158: my $rpmAutoReqProv;
! 159: my $rpmdescription;
! 160: my $rpmpre;
! 161: my $directories;
! 162: my $directory;
! 163: my $targetdirs;
! 164: my $targetdir;
! 165: my $categoryname;
! 166: my $description;
! 167: my $files;
! 168: my $fileglobs;
! 169: my $links;
! 170: my $file;
! 171: my $link;
! 172: my $fileglob;
! 173: my $sourcedir;
! 174: my $targets;
! 175: my $target;
! 176: my $source;
! 177: my $note;
! 178: my $build;
! 179: my $commands;
! 180: my $command;
! 181: my $status;
! 182: my $dependencies;
! 183: my $dependency;
! 184:
! 185: # Make new parser with distribution specific input
! 186: undef $parser;
! 187: $parser = HTML::TokeParser->new(\$cleanstring) or
! 188: die('can\'t create TokeParser object');
! 189: $parser->xml_mode('1');
! 190:
! 191: # Define handling methods for mode-dependent text rendering
! 192: $parser->{textify}={
! 193: targetroot => \&format_targetroot,
! 194: sourceroot => \&format_sourceroot,
! 195: categories => \&format_categories,
! 196: category => \&format_category,
! 197: targetdir => \&format_targetdir,
! 198: chown => \&format_chown,
! 199: chmod => \&format_chmod,
! 200: rpm => \&format_rpm,
! 201: rpmSummary => \&format_rpmSummary,
! 202: rpmName => \&format_rpmName,
! 203: rpmVersion => \&format_rpmVersion,
! 204: rpmRelease => \&format_rpmRelease,
! 205: rpmVendor => \&format_rpmVendor,
! 206: rpmBuildRoot => \&format_rpmBuildRoot,
! 207: rpmCopyright => \&format_rpmCopyright,
! 208: rpmGroup => \&format_rpmGroup,
! 209: rpmSource => \&format_rpmSource,
! 210: rpmAutoReqProv => \&format_rpmAutoReqProv,
! 211: rpmdescription => \&format_rpmdescription,
! 212: rpmpre => \&format_rpmpre,
! 213: directories => \&format_directories,
! 214: directory => \&format_directory,
! 215: categoryname => \&format_categoryname,
! 216: description => \&format_description,
! 217: files => \&format_files,
! 218: file => \&format_file,
! 219: fileglob => \&format_fileglob,
! 220: link => \&format_link,
! 221: linkto => \&format_linkto,
! 222: source => \&format_source,
! 223: target => \&format_target,
! 224: note => \&format_note,
! 225: build => \&format_build,
! 226: status => \&format_status,
! 227: dependencies => \&format_dependencies,
! 228: glob => \&format_glob,
! 229: sourcedir => \&format_sourcedir,
! 230: filenames => \&format_filenames,
! 231: };
! 232:
! 233: my $text;
! 234: my $token;
! 235: undef $hloc;
! 236: undef @hierarchy;
! 237: my $hloc;
! 238: my @hierarchy2;
! 239: while ($token = $parser->get_tag('lpml')) {
! 240: &format_lpml(@{$token});
! 241: $text = &trim($parser->get_text('/lpml'));
! 242: $token = $parser->get_tag('/lpml');
! 243: print $lpml;
! 244: print "\n";
! 245: $text=~s/\s*\n\s*\n\s*/\n/g;
! 246: print $text;
! 247: print "\n";
! 248: print &end();
! 249: }
! 250: exit;
! 251:
! 252: sub end {
! 253: if ($mode eq 'html') {
! 254: return "THE END\n";
! 255: }
! 256: }
! 257:
! 258: # ----------------------- Take in string to parse and the separation expression
! 259: sub extract_array {
! 260: my ($stringtoparse,$sepexp) = @_;
! 261: my @a=split(/$sepexp/,$stringtoparse);
! 262: return \@a;
! 263: }
! 264:
! 265: # --------------------------------------------------------- Format lpml section
! 266: sub format_lpml {
! 267: my (@tokeninfo)=@_;
! 268: my $date=`date`; chop $date;
! 269: if ($mode eq 'html') {
! 270: $lpml = "LPML BEGINNING: $date";
! 271: }
! 272: }
! 273: # --------------------------------------------------- Format targetroot section
! 274: sub format_targetroot {
! 275: my $text=&trim($parser->get_text('/targetroot'));
! 276: $text=$targetroot if $targetroot;
! 277: $parser->get_tag('/targetroot');
! 278: if ($mode eq 'html') {
! 279: return $targetroot="\nTARGETROOT: $text";
! 280: }
! 281: else {
! 282: return '';
! 283: }
! 284: }
! 285: # --------------------------------------------------- Format sourceroot section
! 286: sub format_sourceroot {
! 287: my $text=&trim($parser->get_text('/sourceroot'));
! 288: $text=$sourceroot if $sourceroot;
! 289: $parser->get_tag('/sourceroot');
! 290: if ($mode eq 'html') {
! 291: return $sourceroot="\nSOURCEROOT: $text";
! 292: }
! 293: else {
! 294: return '';
! 295: }
! 296: }
! 297: # --------------------------------------------------- Format categories section
! 298: sub format_categories {
! 299: my $text=&trim($parser->get_text('/categories'));
! 300: $parser->get_tag('/categories');
! 301: if ($mode eq 'html') {
! 302: return $categories="\nBEGIN CATEGORIES\n$text\nEND CATEGORIES\n";
! 303: }
! 304: else {
! 305: return '';
! 306: }
! 307: }
! 308: # --------------------------------------------------- Format categories section
! 309: sub format_category {
! 310: my (@tokeninfo)=@_;
! 311: $category_att_name=$tokeninfo[2]->{'name'};
! 312: $category_att_type=$tokeninfo[2]->{'type'};
! 313: $chmod='';$chown='';
! 314: $parser->get_text('/category');
! 315: $parser->get_tag('/category');
! 316: if ($mode eq 'html') {
! 317: return $category="\nCATEGORY $category_att_name $category_att_type ".
! 318: "$chmod $chown";
! 319: }
! 320: else {
! 321: return '';
! 322: }
! 323: }
! 324: # -------------------------------------------------------- Format chown section
! 325: sub format_chown {
! 326: my @tokeninfo=@_;
! 327: $chown='';
! 328: my $text=&trim($parser->get_text('/chown'));
! 329: if ($text) {
! 330: $parser->get_tag('/chown');
! 331: $chown=$text;
! 332: }
! 333: return '';
! 334: }
! 335: # -------------------------------------------------------- Format chmod section
! 336: sub format_chmod {
! 337: my @tokeninfo=@_;
! 338: $chmod='';
! 339: my $text=&trim($parser->get_text('/chmod'));
! 340: if ($text) {
! 341: $parser->get_tag('/chmod');
! 342: $chmod=$text;
! 343: }
! 344: return '';
! 345: }
! 346: # ---------------------------------------------------------- Format rpm section
! 347: sub format_rpm {
! 348: my $text=&trim($parser->get_text('/rpm'));
! 349: $parser->get_tag('/rpm');
! 350: if ($mode eq 'html') {
! 351: return $rpm="\nBEGIN RPM\n$text\nEND RPM";
! 352: }
! 353: else {
! 354: return '';
! 355: }
! 356: }
! 357: # --------------------------------------------------- Format rpmSummary section
! 358: sub format_rpmSummary {
! 359: my $text=&trim($parser->get_text('/rpmSummary'));
! 360: $parser->get_tag('/rpmSummary');
! 361: if ($mode eq 'html') {
! 362: return $rpmSummary="\nRPMSUMMARY $text";
! 363: }
! 364: else {
! 365: return '';
! 366: }
! 367: }
! 368: # ------------------------------------------------------ Format rpmName section
! 369: sub format_rpmName {
! 370: my $text=&trim($parser->get_text('/rpmName'));
! 371: $parser->get_tag('/rpmName');
! 372: if ($mode eq 'html') {
! 373: return $rpmName="\nRPMNAME $text";
! 374: }
! 375: else {
! 376: return '';
! 377: }
! 378: }
! 379: # --------------------------------------------------- Format rpmVersion section
! 380: sub format_rpmVersion {
! 381: my $text=$parser->get_text('/rpmVersion');
! 382: $parser->get_tag('/rpmVersion');
! 383: if ($mode eq 'html') {
! 384: return $rpmVersion="\nRPMVERSION $text";
! 385: }
! 386: else {
! 387: return '';
! 388: }
! 389: }
! 390: # --------------------------------------------------- Format rpmRelease section
! 391: sub format_rpmRelease {
! 392: my $text=$parser->get_text('/rpmRelease');
! 393: $parser->get_tag('/rpmRelease');
! 394: if ($mode eq 'html') {
! 395: return $rpmRelease="\nRPMRELEASE $text";
! 396: }
! 397: else {
! 398: return '';
! 399: }
! 400: }
! 401: # ---------------------------------------------------- Format rpmVendor section
! 402: sub format_rpmVendor {
! 403: my $text=$parser->get_text('/rpmVendor');
! 404: $parser->get_tag('/rpmVendor');
! 405: if ($mode eq 'html') {
! 406: return $rpmVendor="\nRPMVENDOR $text";
! 407: }
! 408: else {
! 409: return '';
! 410: }
! 411: }
! 412: # ------------------------------------------------- Format rpmBuildRoot section
! 413: sub format_rpmBuildRoot {
! 414: my $text=$parser->get_text('/rpmBuildRoot');
! 415: $parser->get_tag('/rpmBuildRoot');
! 416: if ($mode eq 'html') {
! 417: return $rpmBuildRoot="\nRPMBUILDROOT $text";
! 418: }
! 419: else {
! 420: return '';
! 421: }
! 422: }
! 423: # ------------------------------------------------- Format rpmCopyright section
! 424: sub format_rpmCopyright {
! 425: my $text=$parser->get_text('/rpmCopyright');
! 426: $parser->get_tag('/rpmCopyright');
! 427: if ($mode eq 'html') {
! 428: return $rpmCopyright="\nRPMCOPYRIGHT $text";
! 429: }
! 430: else {
! 431: return '';
! 432: }
! 433: }
! 434: # ----------------------------------------------------- Format rpmGroup section
! 435: sub format_rpmGroup {
! 436: my $text=$parser->get_text('/rpmGroup');
! 437: $parser->get_tag('/rpmGroup');
! 438: if ($mode eq 'html') {
! 439: return $rpmGroup="\nRPMGROUP $text";
! 440: }
! 441: else {
! 442: return '';
! 443: }
! 444: }
! 445: # ---------------------------------------------------- Format rpmSource section
! 446: sub format_rpmSource {
! 447: my $text=$parser->get_text('/rpmSource');
! 448: $parser->get_tag('/rpmSource');
! 449: if ($mode eq 'html') {
! 450: return $rpmSource="\nRPMSOURCE $text";
! 451: }
! 452: else {
! 453: return '';
! 454: }
! 455: }
! 456: # ----------------------------------------------- Format rpmAutoReqProv section
! 457: sub format_rpmAutoReqProv {
! 458: my $text=$parser->get_text('/rpmAutoReqProv');
! 459: $parser->get_tag('/rpmAutoReqProv');
! 460: if ($mode eq 'html') {
! 461: return $rpmAutoReqProv="\nRPMAUTOREQPROV $text";
! 462: }
! 463: else {
! 464: return '';
! 465: }
! 466: }
! 467: # ----------------------------------------------- Format rpmdescription section
! 468: sub format_rpmdescription {
! 469: my $text=$parser->get_text('/rpmdescription');
! 470: $parser->get_tag('/rpmdescription');
! 471: if ($mode eq 'html') {
! 472: return $rpmdescription="\nRPMDESCRIPTION $text";
! 473: }
! 474: else {
! 475: return '';
! 476: }
! 477: }
! 478: # ------------------------------------------------------- Format rpmpre section
! 479: sub format_rpmpre {
! 480: my $text=$parser->get_text('/rpmpre');
! 481: $parser->get_tag('/rpmpre');
! 482: if ($mode eq 'html') {
! 483: return $rpmpre="\nRPMPRE $text";
! 484: }
! 485: else {
! 486: return '';
! 487: }
! 488: }
! 489: # -------------------------------------------------- Format directories section
! 490: sub format_directories {
! 491: my $text=&trim($parser->get_text('/directories'));
! 492: $parser->get_tag('/directories');
! 493: if ($mode eq 'html') {
! 494: return $directories="\nBEGIN DIRECTORIES\n$text\nEND DIRECTORIES\n";
! 495: }
! 496: else {
! 497: return '';
! 498: }
! 499: }
! 500: # ---------------------------------------------------- Format directory section
! 501: sub format_directory {
! 502: my (@tokeninfo)=@_;
! 503: $targetdir='';$categoryname='';$description='';
! 504: $parser->get_text('/directory');
! 505: $parser->get_tag('/directory');
! 506: if ($mode eq 'html') {
! 507: return $directory="\nDIRECTORY $targetdir $categoryname $description";
! 508: }
! 509: else {
! 510: return '';
! 511: }
! 512: }
! 513: # ---------------------------------------------------- Format targetdir section
! 514: sub format_targetdir {
! 515: my @tokeninfo=@_;
! 516: $targetdir='';
! 517: my $text=&trim($parser->get_text('/targetdir'));
! 518: if ($text) {
! 519: $parser->get_tag('/targetdir');
! 520: $targetdir=$text;
! 521: }
! 522: return '';
! 523: }
! 524: # ------------------------------------------------- Format categoryname section
! 525: sub format_categoryname {
! 526: my @tokeninfo=@_;
! 527: $categoryname='';
! 528: my $text=&trim($parser->get_text('/categoryname'));
! 529: if ($text) {
! 530: $parser->get_tag('/categoryname');
! 531: $categoryname=$text;
! 532: }
! 533: return '';
! 534: }
! 535: # -------------------------------------------------- Format description section
! 536: sub format_description {
! 537: my @tokeninfo=@_;
! 538: $description='';
! 539: my $text=&trim($parser->get_text('/description'));
! 540: if ($text) {
! 541: $parser->get_tag('/description');
! 542: $description=$text;
! 543: }
! 544: return '';
! 545: }
! 546: # -------------------------------------------------------- Format files section
! 547: sub format_files {
! 548: my $text=&trim($parser->get_text('/files'));
! 549: $parser->get_tag('/files');
! 550: if ($mode eq 'html') {
! 551: return $directories="\nBEGIN FILES\n$text\nEND FILES\n";
! 552: }
! 553: else {
! 554: return '';
! 555: }
! 556: }
! 557: # ---------------------------------------------------- Format fileglobs section
! 558: sub format_fileglobs {
! 559:
! 560: }
! 561: # -------------------------------------------------------- Format links section
! 562: sub format_links {
1.2 albertel 563:
1.1 harris41 564: }
1.3 ! harris41 565: # --------------------------------------------------------- Format file section
! 566: sub format_file {
! 567: my @tokeninfo=@_;
! 568: $file=''; $source=''; $target=''; $categoryname=''; $description='';
! 569: $note=''; $build=''; $status=''; $dependencies='';
! 570: my $text=&trim($parser->get_text('/file'));
! 571: if ($source) {
! 572: $parser->get_tag('/file');
! 573: if ($mode eq 'html') {
! 574: return ($file="\nBEGIN FILE\n".
! 575: "$source $target $categoryname $description $note " .
! 576: "$build $status $dependencies" .
! 577: "\nEND FILE");
! 578: }
! 579: else {
! 580: return '';
! 581: }
! 582: }
! 583: return '';
! 584: }
! 585: # --------------------------------------------------------- Format link section
! 586: sub format_link {
! 587: my @tokeninfo=@_;
! 588: $link=''; $linkto=''; $target=''; $categoryname=''; $description='';
! 589: $note=''; $build=''; $status=''; $dependencies='';
! 590: my $text=&trim($parser->get_text('/link'));
! 591: if ($linkto) {
! 592: $parser->get_tag('/link');
! 593: if ($mode eq 'html') {
! 594: return $link="\nBEGIN LINK\n".
! 595: "$linkto $target $categoryname $description $note " .
! 596: "$build $status $dependencies" .
! 597: "\nEND LINK";
! 598: }
! 599: else {
! 600: return '';
! 601: }
! 602: }
! 603: return '';
! 604: }
! 605: # ----------------------------------------------------- Format fileglob section
! 606: sub format_fileglob {
! 607: my @tokeninfo=@_;
! 608: $fileglob=''; $glob=''; $sourcedir='';
! 609: $targetdir=''; $categoryname=''; $description='';
! 610: $note=''; $build=''; $status=''; $dependencies='';
! 611: $filenames='';
! 612: my $text=&trim($parser->get_text('/fileglob'));
! 613: if ($sourcedir) {
! 614: $parser->get_tag('/fileglob');
! 615: if ($mode eq 'html') {
! 616: return $fileglob="\nBEGIN FILEGLOB\n".
! 617: "$glob sourcedir $targetdir $categoryname $description $note ".
! 618: "$build $status $dependencies $filenames" .
! 619: "\nEND FILEGLOB";
! 620: }
! 621: else {
! 622: return '';
! 623: }
! 624: }
! 625: return '';
! 626: }
! 627: # ---------------------------------------------------- Format sourcedir section
! 628: sub format_sourcedir {
! 629: my @tokeninfo=@_;
! 630: $sourcedir='';
! 631: my $text=&trim($parser->get_text('/sourcedir'));
! 632: if ($text) {
! 633: $parser->get_tag('/sourcedir');
! 634: $sourcedir=$text;
! 635: }
! 636: return '';
! 637: }
! 638: # ------------------------------------------------------- Format target section
! 639: sub format_target {
! 640: my @tokeninfo=@_;
! 641: $target='';
! 642: my $text=&trim($parser->get_text('/target'));
! 643: if ($text) {
! 644: $parser->get_tag('/target');
! 645: $target=$text;
! 646: }
! 647: return '';
! 648: }
! 649: # ------------------------------------------------------- Format source section
! 650: sub format_source {
! 651: my @tokeninfo=@_;
! 652: $source='';
! 653: my $text=&trim($parser->get_text('/source'));
! 654: if ($text) {
! 655: $parser->get_tag('/source');
! 656: $source=$text;
! 657: }
! 658: return '';
! 659: }
! 660: # --------------------------------------------------------- Format note section
! 661: sub format_note {
! 662: my @tokeninfo=@_;
! 663: $note='';
! 664: my $text=&trim($parser->get_text('/note'));
! 665: if ($text) {
! 666: $parser->get_tag('/note');
! 667: $note=$text;
! 668: }
! 669: return '';
! 670:
! 671: }
! 672: # -------------------------------------------------------- Format build section
! 673: sub format_build {
! 674: my @tokeninfo=@_;
! 675: $build='';
! 676: my $text=&trim($parser->get_text('/build'));
! 677: if ($text) {
! 678: $parser->get_tag('/build');
! 679: $build=$text;
! 680: }
! 681: return '';
! 682: }
! 683: # ------------------------------------------------------- Format status section
! 684: sub format_status {
! 685: my @tokeninfo=@_;
! 686: $status='';
! 687: my $text=&trim($parser->get_text('/status'));
! 688: if ($text) {
! 689: $parser->get_tag('/status');
! 690: $status=$text;
! 691: }
! 692: return '';
! 693: }
! 694: # ------------------------------------------------- Format dependencies section
! 695: sub format_dependencies {
! 696: my @tokeninfo=@_;
! 697: $dependencies='';
! 698: my $text=&trim($parser->get_text('/dependencies'));
! 699: if ($text) {
! 700: $parser->get_tag('/dependencies');
! 701: $dependencies=$text;
! 702: }
! 703: return '';
! 704: }
! 705: # --------------------------------------------------------- Format glob section
! 706: sub format_glob {
! 707: my @tokeninfo=@_;
! 708: $glob='';
! 709: my $text=&trim($parser->get_text('/glob'));
! 710: if ($text) {
! 711: $parser->get_tag('/glob');
! 712: $glob=$text;
! 713: }
! 714: return '';
! 715: }
! 716: # ---------------------------------------------------- Format filenames section
! 717: sub format_filenames {
! 718: my @tokeninfo=@_;
! 719: $glob='';
! 720: my $text=&trim($parser->get_text('/filenames'));
! 721: if ($text) {
! 722: $parser->get_tag('/filenames');
! 723: $filenames=$text;
! 724: }
! 725: return '';
! 726: }
! 727: # ------------------------------------------------------- Format linkto section
! 728: sub format_linkto {
! 729: my @tokeninfo=@_;
! 730: $glob='';
! 731: my $text=&trim($parser->get_text('/linkto'));
! 732: if ($text) {
! 733: $parser->get_tag('/linkto');
! 734: $linkto=$text;
! 735: }
! 736: return '';
! 737: }
! 738: # --------------------------------------- remove starting and ending whitespace
! 739: sub trim {
! 740: my ($s)=@_; $s=~s/^\s*//; $s=~s/\s*$//; return $s;
! 741: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>