422 {
423 array<ref CfgParam> param_parent = new array<ref CfgParam>;
424
426
427 array<int> a = new array<int>;
428 array<int> b = new array<int>;
429
430 int pos_a = 0;
431 int pos_b = 0;
432 int element = 0;
433 int value_start = 0;
434 int value_end = 0;
435
436 while ( pos_a > -1 || pos_b > -1 )
437 {
439 if ( pos_a > -1 )
440 {
441 a.Insert(pos_a);
442 pos_a++;
443 }
444
446 if ( pos_b > -1 )
447 {
448 b.Insert(pos_b);
449 pos_b++;
450 }
451 }
452
453 pos_a = 0;
454 pos_b = 0;
455
456 for ( pos_a = 0; pos_a < a.Count(); ++pos_a )
457 {
458 if ( a.Get(pos_a) > b.Get(pos_b) )
459 {
460 element--;
461
462 if ( element <= 1 )
463 {
464 value_end = b.Get(pos_b) - value_start + 1;
465
466
467
468 strings.Insert( param_value.
Substring(value_start, value_end) );
469
470 value_start = b.Get(pos_b) + 1;
471 }
472
473 pos_a--;
474 pos_b++;
475 }
476 else if ( a.Get(pos_a) < b.Get(pos_b) )
477 {
478 if ( pos_a == a.Count() - 1 && pos_b < b.Count() - 1 )
479 {
480 element--;
481
482 if ( element == 0 )
483 {
484 value_end = b.Get(pos_b) - value_start;
485
486
487
488 strings.Insert( param_value.
Substring(value_start + 1, value_end) );
489
490 value_start = b.Get(pos_b) + 1;
491 }
492
493 pos_a--;
494 pos_b++;
495 }
496 else
497 {
498 element++;
499
500 if ( element == 2 )
501 {
502 value_start = a.Get(pos_a);
503 }
504 }
505 }
506 }
507
508
509
510 if ( strings.Count() == 0 )
511 {
512
513
514 string param_value_content = param_value.
Substring(1, param_value.
Length() - 2);
515
516
517
518 param_value_content.
Split(
",", strings);
519 }
520
521 for ( int i = 0; i < strings.Count(); ++i )
522 {
523 string str = strings.Get(i);
524
525
526
528
529 param_parent.Insert(param);
530 }
531
532 return param_parent;
533 }
CfgParam ParseText(string text)
array< string > TStringArray
proto native int Length()
Returns length of string.
void Split(string sample, out array< string > output)
Splits string into array of strings separated by 'sample'.
proto string Substring(int start, int len)
Substring of 'str' from 'start' position 'len' number of characters.
proto native int IndexOfFrom(int start, string sample)
Finds 'sample' in 'str' from 'start' position. Returns -1 when not found.