@@ -117,8 +117,8 @@ private void ButtonSearch_Click(object sender, EventArgs e)
117
117
{
118
118
if ( Guid . TryParse ( bp , out var guid ) )
119
119
blueprints . Add ( guid ) ;
120
- else if ( rxAlphaNumerical . IsMatch ( bp ) )
121
- types . Add ( ", " + bp ) ;
120
+ else // if (rxAlphaNumerical.IsMatch(bp))
121
+ types . Add ( /* ", " + */ bp ) ;
122
122
}
123
123
124
124
if ( blueprints . Count == 0 && types . Count == 0 )
@@ -194,7 +194,7 @@ private void Search(ZipEntry entry)
194
194
}
195
195
196
196
// if it's an type, check if it's blacklisted
197
- else if ( isType && this . types . Any ( a => quote . EndsWith ( a ) ) )
197
+ else if ( isType && this . types . Any ( a => quote . Contains ( a ) ) )
198
198
{
199
199
// get id, if it has any
200
200
if ( lastId . TryGetValue ( stack . Count , out var id ) )
@@ -297,16 +297,18 @@ private void Cleanup()
297
297
break ;
298
298
}
299
299
300
- // include tailing comma
300
+ // include tailing comma; check if last entry in list
301
301
if ( ! purge . IsList )
302
302
{
303
303
for ( int j = purge . End + 1 ; j < purge . Data . Length ; j ++ )
304
304
{
305
305
char c = ( char ) purge . Data [ j ] ;
306
306
if ( char . IsWhiteSpace ( c ) )
307
307
continue ;
308
- if ( c == ',' )
308
+ else if ( c == ',' )
309
309
purge . End = j ;
310
+ else if ( c == ']' || c == '}' )
311
+ purge . IsLastInList = true ;
310
312
break ;
311
313
}
312
314
}
@@ -382,6 +384,20 @@ private void ButtonPurge_Click(object sender, EventArgs e)
382
384
// simply clear all chars
383
385
for ( int i = purge . Start ; i <= purge . End ; i ++ )
384
386
purge . Data [ i ] = ( byte ) ' ' ;
387
+
388
+ // remove preceding comma
389
+ if ( purge . IsLastInList )
390
+ {
391
+ for ( int i = purge . Start ; i > 0 ; i -- )
392
+ {
393
+ char c = ( char ) purge . Data [ i ] ;
394
+ if ( char . IsWhiteSpace ( c ) )
395
+ continue ;
396
+ else if ( c == ',' )
397
+ purge . Data [ i ] = ( byte ) ' ' ;
398
+ break ;
399
+ }
400
+ }
385
401
}
386
402
}
387
403
@@ -390,7 +406,7 @@ private void ButtonPurge_Click(object sender, EventArgs e)
390
406
{
391
407
foreach ( var ( file , data ) in edited )
392
408
{
393
- CheckSyntax ( data ) ;
409
+ CheckSyntax ( file , data ) ;
394
410
zip . UpdateEntry ( file , data ) ;
395
411
}
396
412
@@ -406,17 +422,21 @@ private void ButtonPurge_Click(object sender, EventArgs e)
406
422
Clear ( ) ;
407
423
}
408
424
409
- private bool CheckSyntax ( byte [ ] data )
425
+ private bool CheckSyntax ( string file , byte [ ] data )
410
426
{
427
+ string sdata = null ;
411
428
try
412
429
{
413
- JsonValue . Parse ( Encoding . Default . GetString ( data ) ) ;
430
+ sdata = Encoding . Default . GetString ( data ) ;
431
+ JsonValue . Parse ( sdata ) ;
414
432
return true ;
415
433
}
416
434
catch ( Exception e )
417
435
{
418
436
Debug . WriteLine ( e . ToString ( ) ) ;
419
- throw new Exception ( "Syntax error in output file" , e ) ;
437
+ Debug . WriteLine ( "in file: " + file ) ;
438
+ Debug . WriteLine ( sdata ) ;
439
+ throw new Exception ( "Syntax error in output file " + file , e ) ;
420
440
}
421
441
}
422
442
0 commit comments