@@ -87,7 +87,7 @@ public int writePrefix(String program)
87
87
// an OutOfMemoryError or NullPointerException will happen.
88
88
// again, not gonna bother tracking this down, but here's a hack.
89
89
// http://dev.processing.org/bugs/show_bug.cgi?id=16
90
- scrubComments (program );
90
+ program = scrubComments (program );
91
91
// If there are errors, an exception is thrown and this fxn exits.
92
92
93
93
if (Preferences .getBoolean ("preproc.substitute_unicode" )) {
@@ -242,14 +242,17 @@ public int firstStatement(String in) {
242
242
*/
243
243
public String strip (String in ) {
244
244
// XXX: doesn't properly handle special single-quoted characters
245
+ List <Pattern > patterns = new ArrayList <Pattern >();
245
246
// single-quoted character
246
- Pattern [] patterns = new Pattern [6 ];
247
- patterns [5 ] = Pattern .compile ("(\" (?:[^\" \\ \\ ]|\\ \\ .)*\" )" , Pattern .MULTILINE );
248
- patterns [4 ] = Pattern .compile ("(^\\ s*#.*?$)" , Pattern .MULTILINE );
249
- patterns [3 ] = Pattern .compile ("(/\\ *[^*]*(?:\\ *(?!/)[^*]*)*\\ */)" , Pattern .MULTILINE );
250
- patterns [2 ] = Pattern .compile ("(//.*?$)" , Pattern .MULTILINE );
251
- patterns [1 ] = Pattern .compile ("('\\ \\ \" ')" , Pattern .MULTILINE );
252
- patterns [0 ] = Pattern .compile ("('.')" , Pattern .MULTILINE );
247
+ patterns .add (Pattern .compile ("('.')" , Pattern .MULTILINE ));
248
+ // single and multi-line comment
249
+ patterns .add (Pattern .compile ("('\\ \\ \" ')" , Pattern .MULTILINE ));
250
+ patterns .add (Pattern .compile ("(//.*?$)" , Pattern .MULTILINE ));
251
+ patterns .add (Pattern .compile ("(/\\ *[^*]*(?:\\ *(?!/)[^*]*)*\\ */)" , Pattern .MULTILINE ));
252
+ // pre-processor directive
253
+ patterns .add (Pattern .compile ("(^\\ s*#.*?$)" , Pattern .MULTILINE ));
254
+ // double-quoted string
255
+ patterns .add (Pattern .compile ("(\" (?:[^\" \\ \\ ]|\\ \\ .)*\" )" , Pattern .MULTILINE ));
253
256
254
257
String code = in ;
255
258
for (Pattern p : patterns ) {
@@ -259,7 +262,7 @@ public String strip(String in) {
259
262
260
263
return code ;
261
264
}
262
-
265
+
263
266
/**
264
267
* Removes the contents of all top-level curly brace pairs {}.
265
268
* @param in the String to collapse
0 commit comments