3 # WARNING! This script is really ugly!
6 # 1) make a folder, like en-import
7 # 2) run ../parse-help-patches.pl in it
11 # find en-import/ -type f -name \*.txt | ./wiki_import.sh -s 'Top level'
28 my $objectclassName = "";
32 my $abbreviationName = "";
33 my $descriptionName = "";
34 my $categoryName = "";
35 my $datatypeName = "";
37 #------------------------------------------------------------------------------#
38 # TRANSLATION VARIABLES
39 #------------------------------------------------------------------------------#
59 my $abbreviation = "";
63 my $releaseVersion = "";
65 my $dependencies = "";
68 my $programmingLanguage = "";
70 my $operatingSystem = "";
73 my $distribution = "";
77 #------------------------------------------------------------------------------#
83 $category = "Catégorie";
87 $objectclass = "Classe d'objets";
92 $arguments = "Arguments";
93 $messages = "Messages";
97 $description = "Description";
98 $abbreviation = "Abréviation";
99 $library = "Bibliothèque";
101 $developer = "Développeur";
102 $releaseVersion = "Version";
103 $releaseDate = "Date";
104 $dependencies = "Dépendances";
105 $license = "Licence";
106 $website = "Site Web";
107 $programmingLanguage = "Langage de programmation";
108 $platform = "Plate-forme";
109 $operatingSystem = "Système d'exploitation";
110 $language = "Langue";
111 $dataType = "Type de données";
112 $distribution = "Distribution";
115 $caption = "Légende";
116 $language = "Langue";
121 #------------------------------------------------------------------------------#
123 #------------------------------------------------------------------------------#
124 my $csvfile = '/Users/hans/Desktop/TODO/wiki_files_hacked/objectlist.csv';
125 my $csv = Text
::CSV_PP
->new();
128 open (CSV
, "<", $csvfile) or die $!;
129 my @csvlines = split(/\012\015?|\015\012?/,(join '',<CSV
>));
130 foreach (@csvlines) {
131 if ($csv->parse($_)) {
132 my @columns = $csv->fields();
133 $csvhash{ $columns[0] }{ $columns[2] } = "$columns[0],$columns[2],$columns[3],$columns[4],$columns[5],$columns[7]";
134 #print("$columns[0],$columns[2] | ");
136 my $err = $csv->error_input;
137 print "Failed to parse line: $err";
142 #------------------------------------------------------------------------------#
144 #------------------------------------------------------------------------------#
146 foreach (`/sw/bin/find /Users/hans/Desktop/TODO/wiki_files_hacked/5.reference/ -type f -name '*.pd'`) {
149 if( (m
|.*/5\.reference/([a
-zA
-Z0
-9_
-]+)/(.+)-help\.pd|) || (m|.*/5\
.reference
/([a-zA-Z0-9_-]+)/(.+)\
.pd
|) ) {
150 # print("$1 , $2\t");
151 if( $1 eq 'zflatspace' ) { $libraryName = "flatspace";}
152 else {$libraryName = lc($1); }
153 $objectclassName = $2;
157 # print "filename: $fileName\n";
159 $printText = ""; # init container
160 %xyhash = (); # init sorting hash
162 open(HELPPATCH
, "$fileName");
163 undef $/; # $/ defines the
"end of record" character
164 $_ = <HELPPATCH
>; # read the whole file into the scalar
166 $/ = "\n"; # Restore for normal behaviour later in script
168 s
| \\||g
; # remove Pd-style escaping
169 s
|([^;])\n|$1 |g
; # remove extra newlines
170 s
|\
(http
://.*\
)\
([ \n]\
)|[$1]$2|g
;
172 @lines = split(';\n', $_);
175 if (m
|^#X text ([0-9]+) ([0-9]+) (.*)|) {
176 $xyhash{ $2 }{ $1 } = $3;
177 # print("$lineCount @ $1,$2: $3\n");
181 for ($column = -300; $column < 1501; $column += 300) {
182 foreach my $yKey ( sort {$a <=> $b} keys(%xyhash) ) {
183 foreach my $xKey ( keys(%{$xyhash{$yKey}}) ) {
184 if ( ($xKey > $lastColumn) && ($xKey < $column) ) {
185 $printText .= "$xyhash{$yKey}{$xKey}\n\n";
186 #print("TEST $xKey,$yKey: $xyhash{$yKey}{$xKey}\n");
190 $lastColumn = $column;
193 my $myColumns = $csvhash{$libraryName}{$objectclassName};
195 if($myColumns) { @myColumns = split(',', $myColumns); }
196 if($myColumns[2]) { $abbreviationName = $myColumns[2]; } if( $classnames{$objectclassName} ) {
197 $pageName = "${objectclassName}_(${libraryName})";
199 $pageName = "${objectclassName}";
204 if( $classnames{$objectclassName} ) {
205 $pageName = "${objectclassName}_(${libraryName})";
207 $pageName = "${objectclassName}";
209 open(OBJECTCLASS
, ">$libraryName/${pageName}.txt");
210 print(OBJECTCLASS
"{{Infobox $objectclass\n");
211 print(OBJECTCLASS
"| $name = $objectclassName\n");
212 if($abbreviationName) {
213 print(OBJECTCLASS
"| $abbreviation = $abbreviationName\n");}
214 print(OBJECTCLASS
"| $description = \n");
215 print(OBJECTCLASS
"| $dataType = \n");
216 print(OBJECTCLASS
"| $library = [[$libraryName]]\n");
217 print(OBJECTCLASS
"| $author = {{$libraryName " . lc(${author
}) . "}}\n");
218 print(OBJECTCLASS
"| $license = {{$libraryName " . lc(${license
}) . "}}\n");
219 print(OBJECTCLASS
"| $status = {{$libraryName " . lc(${status
}) . "}}\n");
220 print(OBJECTCLASS
"| $website = {{$libraryName " . lc(${website
}) . "}}\n");
221 print(OBJECTCLASS
"| $releaseVersion = {{$libraryName " . lc(${releaseVersion
}) . "}}\n");
222 print(OBJECTCLASS
"| $releaseDate = {{$libraryName " . lc(${releaseDate
}) . "}}\n");
223 print(OBJECTCLASS
"| $distribution = {{$libraryName " . lc(${distribution
}) . "}}\n");
224 print(OBJECTCLASS
"| $platform = [[GNU/Linux]], [[Mac OS X]], [[Windows]]\n");
225 print(OBJECTCLASS
"}}\n\n");
226 # print(OBJECTCLASS "\n$printText\n\n\n");
227 print(OBJECTCLASS
"==$inlets==\n\n\n");
228 print(OBJECTCLASS
"==$outlets==\n\n\n");
229 print(OBJECTCLASS
"==$arguments==\n\n\n");
230 # print(OBJECTCLASS "==$messages==\n\n\n");
231 print(OBJECTCLASS
"{{${objectclass}-${stub}}} \n\n");
232 print(OBJECTCLASS
"[[$category:$objectclass]]\n");
233 print(OBJECTCLASS
"[[$category:$libraryName]]\n");
235 # print(OBJECTCLASS "[[$category:$categoryName]]\n");
237 print(OBJECTCLASS
"\n\n");
238 print(OBJECTCLASS
"[[de:$pageName]]\n");
239 print(OBJECTCLASS
"[[en:$pageName]]\n");
240 print(OBJECTCLASS
"[[es:$pageName]]\n");
241 # print(OBJECTCLASS "[[fr:$pageName]]\n");
242 print(OBJECTCLASS
"[[it:$pageName]]\n");
243 print(OBJECTCLASS
"[[ja:$pageName]]\n");
244 print(OBJECTCLASS
"[[nl:$pageName]]\n");
245 print(OBJECTCLASS
"[[pt:$pageName]]\n");
246 print(OBJECTCLASS
"[[ru:$pageName]]\n");
247 print(OBJECTCLASS
"[[tr:$pageName]]\n");
248 print(OBJECTCLASS
"\n\n");
251 $classnames{$objectclassName} = 1;