aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/parse-help-patches.pl126
1 files changed, 126 insertions, 0 deletions
diff --git a/scripts/parse-help-patches.pl b/scripts/parse-help-patches.pl
new file mode 100755
index 00000000..1511686a
--- /dev/null
+++ b/scripts/parse-help-patches.pl
@@ -0,0 +1,126 @@
+#!/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);
+ }
+}
+