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

Hans-Christoph Steiner eighthave at users.sourceforge.net
Sat Sep 29 23:40:26 CEST 2007


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

Added Files:
	parse-help-patches.pl 
Log Message:
first working version of script that generates the text files for the import into pdpedia

--- NEW FILE: parse-help-patches.pl ---
#!/usr/bin/perl

# WARNING!  This script is really ugly!

use strict;
use warnings;

my $line = "";
my @lines;
my $lineCount = 0;
my $column;
my $lastColumn = 0;
my $printText = "";

my %xyhash = ();

my $library = "";
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;
	 $fileName = $_;
  }

#  print "filename: $fileName\n";  
  if ($fileName) {
	 open(HELPPATCH, "$fileName");
	 undef $/;						  # $/ defines the "end of record" character
	 $_ = <HELPPATCH>;			  # read the whole file into the scalar 
	 close HELPPATCH;
	 $/ = "\n";						  # Restore for normal behaviour later in script
  
	 s| \\||g;						  # remove Pd-style escaping
	 s|([^;])\n|$1 |g;			  # remove extra newlines
	 s|\(http://.*\)\([ \n]\)|[$1]$2|g;
  
	 @lines = split(';\n', $_);


	 foreach (@lines) {
		if (m|^#X text ([0-9]+) ([0-9]+) (.*)|) {
		  $xyhash{ $2 }{ $1 } = $3;
		  #	 print("$lineCount @ $1,$2: $3\n");
		}
		$lineCount++;
	 }

	 $printText = "";
	 for ($column = -300; $column < 1501; $column += 300) {
		foreach my $yKey ( sort {$a <=> $b} keys(%xyhash) ) {
		  foreach my $xKey ( keys(%{$xyhash{$yKey}}) ) {
			 if ( ($xKey > $lastColumn) && ($xKey < $column) ) {
				$printText .= "$xyhash{$yKey}{$xKey}\n\n";
				#$printText .= "$xKey,$yKey: $xyhash{$yKey}{$xKey}\n";
			 }
		  }
		}
		$lastColumn = $column;
	 }
	 #print("\n\n\nPRINTTEXT:\n$printText\n\n");
  
	 mkdir($library);
	 open(OBJECTCLASS, ">$library/${name}.txt");
	 write(OBJECTCLASS);
	 close(OBJECTCLASS);
  }
}
  





More information about the Pd-cvs mailing list