[PD-cvs] scripts parse-help-patches.pl,1.1,1.2

Hans-Christoph Steiner eighthave at users.sourceforge.net
Sun Sep 30 22:51:18 CEST 2007


Update of /cvsroot/pure-data/scripts
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25343

Modified Files:
	parse-help-patches.pl 
Log Message:
final tweaks after first test, and yes, this script got even uglier

Index: parse-help-patches.pl
===================================================================
RCS file: /cvsroot/pure-data/scripts/parse-help-patches.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** parse-help-patches.pl	29 Sep 2007 21:40:24 -0000	1.1
--- parse-help-patches.pl	30 Sep 2007 20:51:16 -0000	1.2
***************
*** 5,8 ****
--- 5,9 ----
  use strict;
  use warnings;
+ use Text::CSV_PP;
  
  my $line = "";
***************
*** 13,16 ****
--- 14,18 ----
  my $printText = "";
  
+ my %classnames = ();
  my %xyhash = ();
  
***************
*** 18,79 ****
  my $name = "";
  my $fileName = "";
- 
  #------------------------------------------------------------------------------#
  # THE OUTPUT FORMAT
  #------------------------------------------------------------------------------#
  format OBJECTCLASS =
- {{Infobox Objectclass
- | name                   = ^*
-                            $name
- | library                = ^*
-                            $library
- | author                 = {{^* author}}
-                            $library
- | status                 = {{^* status}}
-                            $library
- | website                = {{^* website}}
-                            $library
- | release date           = {{^* release date}}
-                            $library
- | license                = {{^* license}}
-                            $library
- | platform               = [[GNU/Linux]], [[Mac OS X]], [[Windows]]
- | language               = English
- | distributions          = {{^* distributions}}
-                            $library
- }}
  
- @*
- $printText
  
  ==Inlets==
  
  ==Outlets==
  
  ==Arguments== 
  
  ==Messages==
  
  {{objectclass-stub}}
  [[Category:objectclass]]
- [[Category:^*]
- $library
  .
  
  
  #------------------------------------------------------------------------------#
! # THE PROGRAM
  #------------------------------------------------------------------------------#
  
! foreach (`/sw/bin/find /Applications/Pd-extended.app/Contents/Resources/doc/5.reference/ -type f -name '*.pd'`) {
    chop;
    $fileName = "";
!   if (m|.*/doc/5\.reference/([a-zA-Z0-9_-]+)/(.+)-help\.pd|) {
! 	 print("library: $1  name: $2\n");
  	 $library = lc($1);
  	 $name = $2;
  	 $fileName = $_;
!   } elsif (m|.*/doc/5\.reference/([a-zA-Z0-9_-]+)/(.+)\.pd|) {
! 	 print("library: $1  name: $2 \t\t(no -help)\n");
  	 $library = lc($1);
  	 $name = $2;
--- 20,86 ----
  my $name = "";
  my $fileName = "";
  #------------------------------------------------------------------------------#
  # THE OUTPUT FORMAT
  #------------------------------------------------------------------------------#
  format OBJECTCLASS =
  
  
  ==Inlets==
  
+ 
+ 
  ==Outlets==
  
+ 
+ 
  ==Arguments== 
  
+ 
+ 
  ==Messages==
  
+ 
+ 
  {{objectclass-stub}}
+ 
  [[Category:objectclass]]
  .
  
  
  #------------------------------------------------------------------------------#
! # PARSE CSV
  #------------------------------------------------------------------------------#
+ my $csvfile = '/Users/hans/Desktop/wiki_files_hacked/objectlist.csv';
+ my $csv = Text::CSV_PP->new();
+ my %csvhash = ();
  
! open (CSV, "<", $csvfile) or die $!;
! my @csvlines = split(/\012\015?|\015\012?/,(join '',<CSV>));
! foreach (@csvlines) {
! 	 if ($csv->parse($_)) {
! 		  my @columns = $csv->fields();
! 		  $csvhash{ $columns[0] }{ $columns[2] } = "$columns[0],$columns[2],$columns[3],$columns[4],$columns[5],$columns[7]";
! 		  #print("$columns[0],$columns[2] | ");
! 	 } else {
!   		  my $err = $csv->error_input;
!   		  print "Failed to parse line: $err";
! 	 }
! }
! close CSV;
! 
! #------------------------------------------------------------------------------#
! # PARSE HELP FILES
! #------------------------------------------------------------------------------#
! 
! foreach (`/sw/bin/find /Users/hans/Desktop/wiki_files_hacked/5.reference/ -type f -name '*.pd'`) {
    chop;
    $fileName = "";
!   if (m|.*/5\.reference/([a-zA-Z0-9_-]+)/(.+)-help\.pd|) {
! #	 print("$1 , $2\t");
  	 $library = lc($1);
  	 $name = $2;
  	 $fileName = $_;
!   } elsif (m|.*/5\.reference/([a-zA-Z0-9_-]+)/(.+)\.pd|) {
! #	 print("$1 , $2 (no -help)\t");
  	 $library = lc($1);
  	 $name = $2;
***************
*** 83,86 ****
--- 90,96 ----
  #  print "filename: $fileName\n";  
    if ($fileName) {
+ 	 $printText = "";            # init container
+ 	 %xyhash = ();               # init sorting hash
+ 
  	 open(HELPPATCH, "$fileName");
  	 undef $/;						  # $/ defines the "end of record" character
***************
*** 104,108 ****
  	 }
  
- 	 $printText = "";
  	 for ($column = -300; $column < 1501; $column += 300) {
  		foreach my $yKey ( sort {$a <=> $b} keys(%xyhash) ) {
--- 114,117 ----
***************
*** 110,114 ****
  			 if ( ($xKey > $lastColumn) && ($xKey < $column) ) {
  				$printText .= "$xyhash{$yKey}{$xKey}\n\n";
! 				#$printText .= "$xKey,$yKey: $xyhash{$yKey}{$xKey}\n";
  			 }
  		  }
--- 119,123 ----
  			 if ( ($xKey > $lastColumn) && ($xKey < $column) ) {
  				$printText .= "$xyhash{$yKey}{$xKey}\n\n";
! 				#print("TEST $xKey,$yKey: $xyhash{$yKey}{$xKey}\n");
  			 }
  		  }
***************
*** 116,125 ****
  		$lastColumn = $column;
  	 }
! 	 #print("\n\n\nPRINTTEXT:\n$printText\n\n");
!   
  	 mkdir($library);
! 	 open(OBJECTCLASS, ">$library/${name}.txt");
  	 write(OBJECTCLASS);
  	 close(OBJECTCLASS);
    }
  }
--- 125,179 ----
  		$lastColumn = $column;
  	 }
! 	 
! 	 my $abbreviation = "";
! 	 my $description = "";
! 	 my $category = "";
! 	 my $datatype = "";
! 	 my $myColumns = $csvhash{$library}{$name};
! 	 my @myColumns;
! 	 if($myColumns) { @myColumns = split(',', $myColumns); }
! #	 print("csvhash{$library}{$name}:  $csvhash{$library}{$name}\n");
! 	 if($myColumns[0]) {
! 		if($myColumns[2]) { $abbreviation = $myColumns[2] }
! 		if($myColumns[3]) { $description = $myColumns[3] }
! 		if($myColumns[4]) { $category = $myColumns[4] }
! 		if($myColumns[5]) { $datatype = $myColumns[5] }
! #		print("MYCOLUMNS: $myColumns[0] $myColumns[1] $myColumns[2] $myColumns[3] $myColumns[4] $myColumns[5]\n");
! 	 }
! 	 
  	 mkdir($library);
! 	 if( $classnames{$name} ) {
! 		open(OBJECTCLASS, ">$library/${name}_(${library}).txt");
! 	 } else {
! 		open(OBJECTCLASS, ">$library/${name}.txt");
! 	 }
! 	 print(OBJECTCLASS "{{Infobox Objectclass\n");
! 	 print(OBJECTCLASS "| name                   = $name\n");
! 	 if($abbreviation) {
! 		print(OBJECTCLASS "| abbreviation           = $abbreviation\n");}
! 	 if($description) {
! 		print(OBJECTCLASS "| description            = $description\n");}
! 	 if($datatype) {
! 		print(OBJECTCLASS "| data type              = $datatype\n");}
! 	 print(OBJECTCLASS "| library                = [[$library]]\n");
! 	 print(OBJECTCLASS "| author                 = {{$library author}}\n");
! 	 print(OBJECTCLASS "| license                = {{$library license}}\n");
! 	 print(OBJECTCLASS "| status                 = {{$library status}}\n");
! 	 print(OBJECTCLASS "| website                = {{$library website}}\n");
! 	 print(OBJECTCLASS "| release date           = {{$library release date}}\n");
! 	 print(OBJECTCLASS "| distributions          = {{$library distributions}}\n");
! 	 print(OBJECTCLASS "| language               = English\n");
! 	 print(OBJECTCLASS "| platform               = [[GNU/Linux]], [[Mac OS X]], [[Windows]]\n");
! 	 print(OBJECTCLASS "}}\n\n");
! 	 print(OBJECTCLASS "\n$printText\n");
  	 write(OBJECTCLASS);
+ 	 print(OBJECTCLASS "[[Category:$library]]\n");
+ 	 if($category) {
+ 		print(OBJECTCLASS "[[Category:$category]]\n");
+ 	 }
+ 	 print(OBJECTCLASS "\n\n");
  	 close(OBJECTCLASS);
+ 
+ 	 $classnames{$name} = 1;
    }
  }





More information about the Pd-cvs mailing list