|
314 | 314 |
|
315 | 315 | this.return_value = function(retval, search_term) |
316 | 316 | { |
| 317 | + var STRING_MAX_VALUE_LENGTH = 30; |
317 | 318 | // TODO: move constants |
318 | 319 | var UNDEFINED = 0; |
319 | 320 | var NULL = 1; |
|
342 | 343 | names[PLUS_INFINITY] = "Infinity"; |
343 | 344 | names[MINUS_INFINITY] = "-Infinity"; |
344 | 345 |
|
345 | | - var value_string = ""; |
| 346 | + var search_re = new RegExp(search_term, "ig") |
| 347 | + var value_template = []; |
346 | 348 | var value = ""; |
347 | 349 | var type = types[retval.value[0]]; |
348 | 350 | switch (retval.value[0]) |
349 | 351 | { |
350 | 352 | case UNDEFINED: |
351 | 353 | case NULL: |
352 | | - if (type.contains(search_term)) |
353 | | - { |
354 | | - value_string = |
355 | | - "<item>" + |
356 | | - "<value class='" + type + "'>" + type + "</value>" + |
357 | | - "</item>"; |
| 354 | + if (search_re.test(type)) |
| 355 | + { |
| 356 | + value_template.push( |
| 357 | + ["item", |
| 358 | + ["value", |
| 359 | + type, |
| 360 | + "class", type |
| 361 | + ] |
| 362 | + ] |
| 363 | + ); |
358 | 364 | } |
359 | 365 | break; |
360 | 366 |
|
|
364 | 370 | case PLUS_INFINITY: |
365 | 371 | case MINUS_INFINITY: |
366 | 372 | value = names[retval.value[0]]; |
367 | | - if (value.contains(search_term)) |
| 373 | + if (search_re.test(value)) |
368 | 374 | { |
369 | | - value_string = |
370 | | - "<item>" + |
371 | | - "<value class='" + type + "'>" + value + "</value>" + |
372 | | - "</item>" |
| 375 | + value_template.push( |
| 376 | + ["item", |
| 377 | + ["value", |
| 378 | + value |
| 379 | + ], |
| 380 | + "class", type |
| 381 | + ] |
| 382 | + ); |
373 | 383 | } |
374 | 384 | break; |
375 | 385 |
|
376 | 386 | case NUMBER: |
377 | 387 | value = String(retval.value[1]); |
378 | | - if (value.contains(search_term)) |
379 | | - { |
380 | | - value_string = |
381 | | - "<item>" + |
382 | | - "<value class='" + type + "'>" + value + "</value>" + |
383 | | - "</item>" |
| 388 | + if (search_re.test(value)) |
| 389 | + { |
| 390 | + value_template.push( |
| 391 | + ["item", |
| 392 | + ["value", |
| 393 | + value, |
| 394 | + "class", type |
| 395 | + ] |
| 396 | + ] |
| 397 | + ); |
384 | 398 | } |
385 | 399 | break; |
386 | 400 |
|
387 | 401 | case STRING: |
388 | | - var MAX_VALUE_LENGTH = 30; |
389 | | - var value = retval.value[2]; |
390 | | - if (value.contains(search_term)) |
| 402 | + value = retval.value[2]; |
| 403 | + if (search_re.test(value)) |
391 | 404 | { |
392 | | - var short_value = value.length > MAX_VALUE_LENGTH |
393 | | - ? value.slice(0, MAX_VALUE_LENGTH) + "…" |
| 405 | + var short_value = value.length > STRING_MAX_VALUE_LENGTH |
| 406 | + ? value.slice(0, STRING_MAX_VALUE_LENGTH) + "…" |
394 | 407 | : ""; |
395 | 408 | value = helpers.escapeTextHtml(value).replace(/"/g, "'"); |
396 | 409 | if (short_value) |
397 | 410 | { |
398 | | - value_string = |
399 | | - "<item>" + |
400 | | - "<input type='button' handler='expand-value' class='folder-key'/>" + |
401 | | - "<value class='" + type + "' data-value='\"" + value + "\"'>" + |
402 | | - "\"" + helpers.escapeTextHtml(short_value) + "\"" + |
403 | | - "</value>" + |
404 | | - "</item>" |
| 411 | + value_template.push( |
| 412 | + ["item", |
| 413 | + ["input", |
| 414 | + "type", "button", |
| 415 | + "handler", "expand-value", |
| 416 | + "class", "folder-key" |
| 417 | + ], |
| 418 | + ["value", |
| 419 | + "\"" + helpers.escapeTextHtml(short_value) + "\"", |
| 420 | + "class", type, |
| 421 | + "data-value", "\"" + value + "\"", |
| 422 | + ] |
| 423 | + ] |
| 424 | + ); |
405 | 425 | } |
406 | 426 | else |
407 | 427 | { |
408 | | - value_string = |
409 | | - "<item>" + |
410 | | - "<value class='" + type + "'>\"" + value + "\"</value>" + |
411 | | - "</item>" |
| 428 | + value_template.push( |
| 429 | + ["item", |
| 430 | + ["value", |
| 431 | + "\"" + value + "\"", |
| 432 | + "class", type |
| 433 | + ] |
| 434 | + ] |
| 435 | + ); |
412 | 436 | } |
413 | 437 | } |
414 | 438 | break; |
|
418 | 442 | var name = object[4/*CLASS_NAME*/] === "Function" && !object[5] |
419 | 443 | ? ui_strings.S_ANONYMOUS_FUNCTION_NAME |
420 | 444 | : object[5]; |
421 | | - value_string = window.templates.inspected_js_object(retval.model, true, null, search_term); |
| 445 | + value = window.templates.inspected_js_object(retval.model, true, null, search_term); |
| 446 | + if (value !== "") |
| 447 | + value_template = [value]; |
422 | 448 | break; |
423 | 449 | } |
424 | 450 |
|
|
436 | 462 | object[0/*OBJECT_ID*/], |
437 | 463 | retval.function_from[5] || ui_strings.S_ANONYMOUS_FUNCTION_NAME, |
438 | 464 | object[4/*CLASS_NAME*/]); |
439 | | - var func_search_term = (value_string !== "") ? null : search_term; |
| 465 | + var func_search_term = (value_template.length !== 0) ? null : search_term; |
440 | 466 | var func = window.templates.inspected_js_object(model, true, null, func_search_term); |
441 | 467 |
|
442 | 468 | // If there is no function or value, don't show anything |
443 | | - if (func === "" && value_string === "") |
| 469 | + if (func === "" && value_template.length === 0) |
444 | 470 | return []; |
445 | 471 |
|
446 | 472 | return [ |
|
457 | 483 | [func], |
458 | 484 | "class", "return-function-from" |
459 | 485 | ], |
460 | | - (value_string |
| 486 | + (value_template.length |
461 | 487 | ? ["div", |
462 | 488 | ["span", |
463 | 489 | "↳", |
|
467 | 493 | "data-script-id", String(retval.position_to[0]), |
468 | 494 | "data-script-line", String(retval.position_to[1]) |
469 | 495 | ], |
470 | | - [value_string], |
| 496 | + value_template, |
471 | 497 | "class", "return-value" |
472 | 498 | ] |
473 | 499 | : []) |
|
0 commit comments