(schema, lines, cache)
| 2500 | } |
| 2501 | |
| 2502 | function parseData(schema, lines, cache) { |
| 2503 | |
| 2504 | var obj = {}; |
| 2505 | var esc = lines === '*'; |
| 2506 | var val; |
| 2507 | |
| 2508 | for (var i = 0; i < schema.keys.length; i++) { |
| 2509 | var key = schema.keys[i]; |
| 2510 | |
| 2511 | if (cache && cache !== EMPTYOBJECT && cache[key] != null) { |
| 2512 | obj[key] = cache[key]; |
| 2513 | continue; |
| 2514 | } |
| 2515 | |
| 2516 | var meta = schema.meta[key]; |
| 2517 | if (meta == null) |
| 2518 | continue; |
| 2519 | |
| 2520 | var pos = meta.pos + 1; |
| 2521 | |
| 2522 | switch (meta.type) { |
| 2523 | case 1: // String |
| 2524 | obj[key] = lines[pos]; |
| 2525 | if (esc && obj[key]) |
| 2526 | obj[key] = obj[key].replace(REGTUNESCAPE, regtescapereverse); |
| 2527 | break; |
| 2528 | case 2: // Number |
| 2529 | val = +lines[pos]; |
| 2530 | obj[key] = val < 0 || val > 0 ? val : 0; |
| 2531 | break; |
| 2532 | case 3: // Boolean |
| 2533 | val = lines[pos]; |
| 2534 | obj[key] = BOOLEAN[val] == 1; |
| 2535 | break; |
| 2536 | case 4: // Date |
| 2537 | val = lines[pos]; |
| 2538 | obj[key] = val ? new Date(val[10] === 'T' ? val : +val) : null; |
| 2539 | break; |
| 2540 | case 5: // Object |
| 2541 | val = lines[pos]; |
| 2542 | if (esc && val) |
| 2543 | val = val.replace(REGTUNESCAPE, regtescapereverse); |
| 2544 | obj[key] = val ? val.parseJSON(true) : null; |
| 2545 | break; |
| 2546 | } |
| 2547 | } |
| 2548 | |
| 2549 | return obj; |
| 2550 | } |
| 2551 | |
| 2552 | function regtescapereverse(c) { |
| 2553 | switch (c) { |
no outgoing calls
no test coverage detected